M14 | L5 – Condiții – Structura Alternativa cu Python

Astăzi vom afla despre:

  • Structura Alternativa IF

Aplicațiile pe care le vom folosi sunt:

Replit, python

PROIECTE:

Aplicatii ce folosesc structura alternativa IF

IfSpiral.py arată un exemplu de instrucțiune if în cod:

answer = input(„Do you want to see a spiral? y/n:”)

if answer == ‘y’:

    print(„Working…”)

    import turtle

    t = turtle.Pen()

    t.width(2)

    for x in range(100):

        t.forward(x*2)

        t.left(89)

print(„Okay, we’re done!”)

Să scriem un program care utilizează expresii condiționale booleene pentru a vedea dacă aveți vârsta suficientă pentru a conduce o mașină. Tastați următoarele într-o fereastră nouă și salvați-le ca OldEnough.py.

# OldEnough.py

driving_age = eval(input(„What is the legal driving age where you live? „))

your_age = eval(input(„How old are you? „))

if your_age >= driving_age:

    print(„You’re old enough to drive!”)

if your_age < driving_age:

    print(„Sorry, you can drive in”, driving_age – your_age, „years.”)

Structura IF/ELSE

Exemplu 1:

driving_age = eval(input(„What is the legal driving age where you live? „))

your_age = eval(input(„How old are you? „))

if your_age >= driving_age:

print(„You’re old enough to drive!”)

else:

print(„Sorry, you can drive in”, driving_age – your_age, „years.”)

Exemplu 2:

# PolygonOrRosette.py

import turtle

t = turtle.Pen()

# Ask the user for the number of sides or circles, default to 6

number = int(turtle.numinput(„Number of sides or circles”,

             „How many sides or circles in your shape?”, 6))

# Ask the user whether they want a polygon or rosette

shape = turtle.textinput(„Which shape do you want?”,

                         „Enter ‘p’ for polygon or ‘r’ for rosette:”)

for x in range(number):

    if shape == ‘r’:        # User selected rosette

        t.circle(100)

    else:                   # Default to polygon

        t.forward (150)

    t.left(360/number)

Exemplu 3:

# RosettesAndPolygons.py – a spiral of polygons AND rosettes!

import turtle

t = turtle.Pen()

# Ask the user for the number of sides, default to 4

sides = int(turtle.numinput(„Number of sides”,

            „How many sides in your spiral?”, 4))

# Our outer spiral loop for polygons and rosettes, from size 5 to 75

for m in range(5,75):  

    t.left(360/sides + 5)

    t.width(m//25+1)

    t.penup()        # Don’t draw lines on spiral

    t.forward(m*4)   # Move to next corner

    t.pendown()      # Get ready to draw

    # Draw a little rosette at each EVEN corner of the spiral

    if (m % 2 == 0):

        for n in range(sides):

            t.circle(m/3)

            t.right(360/sides)

    # OR, draw a little polygon at each ODD corner of the spiral

    else:

        for n in range(sides):

            t.forward(m)

            t.right(360/sides)

Structura ELIF

# WhatsMyGrade.py

grade = eval(input(„Enter your number grade (0-100): „))

if grade >= 90:

    print(„You got an A! 🙂 „)

elif grade >= 80:

    print(„You got a B!”)

elif grade >= 70:

    print(„You got a C.”)

elif grade >= 60:

    print(„You got a D…”)

else:

    print(„You got an F. 🙁 „)

Conditii Complexe

# WhatToWear.py

rainy = input(„How’s the weather? Is it raining? (y/n)”).lower()

cold = input(„Is it cold outside? (y/n)”).lower()

if (rainy == ‘y’ and cold == ‘y’):      # Rainy and cold, yuck!

    print(„You’d better wear a raincoat.”)

elif (rainy == ‘y’ and cold != ‘y’):    # Rainy, but warm

    print(„Carry an umbrella with you.”)

elif (rainy != ‘y’ and cold == ‘y’):    # Dry, but cold

    print(„Put on a jacket, it’s cold out!”)

elif (rainy != ‘y’ and cold != ‘y’):    # Warm and sunny, yay!

    print(„Wear whatever you want, it’s beautiful outside!”)

Exemplu encriptor/decriptor:

message = input(„Enter a message to encode or decode: „) # Get a message

message = message.upper()           # Make it all UPPERCASE 🙂

output = „”                         # Create an empty string to hold output

for letter in message:              # Loop through each letter of the message

    if letter.isupper():            # If the letter is in the alphabet (A-Z),

        value = ord(letter) + 13    # shift the letter value up by 13,

        letter = chr(value)         # turn the value back into a letter,

        if not letter.isupper():    # and check to see if we shifted too far

            value -= 26             # If we did, wrap it back around Z->A

            letter = chr(value)     # by subtracting 26 from the letter value

    output += letter                # Add the letter to our output string

print(„Output message: „, output)   # Output our coded/decoded message

Provocare 1:

Ar trebui să puteți modifica RosettesAndPolygons.py pentru ao face mai colorat și, dacă doriți, înlocuiți poligoanele cu spirale mici

Provocare 2:

Pentru o provocare mai mult bazată pe text, creați o versiune avansată a programului nostru EncoderDecoder.py, permițând utilizatorului să introducă propria valoare a cheii, de la 1 la 25, pentru a determina câte litere să transfere mesajul. Apoi, la linia marcată în EncoderDecoder.py (pagina 99), în loc să vă deplasați cu 13 de fiecare dată, treceți la valoarea cheie a utilizatorului.

Pentru a decoda un mesaj trimis cu o altă cheie (să folosim 5 ca valoare a cheii, deci A devine F, B devine G și așa mai departe), persoana care primește mesajul trebuie să știe cheia. Aceștia recuperează mesajul codificând din nou cu tasta inversă (26 minus valoarea cheii, 26 – 5 = 21), astfel încât F să se înfășoare în jurul valorii de A, G să devină B și așa mai departe.

Dacă doriți să faceți acest program mai ușor de utilizat, începeți prin a întreba utilizatorul dacă dorește să codifice sau să decodeze (e sau d) și apoi cereți-i o valoare cheie pe care o stocați ca cheie (numărul de litere a trece cu). Dacă utilizatorul alege să codifice, adăugați valoarea cheii la fiecare literă la, dar dacă alege să decodeze, adăugați 26 – cheie la fiecare literă. Trimiteți acest program unui prieten și trimiteți mesajul!