7. Python – instrukcje warunkowe if…elif…else


if…, else…, elif…

Najprościej rzecz ujmując instrukcje warunkowe tj. if…, elif…, else… pozwalają, w trakcie pisania programu, na rozważanie wielu możliwości odpowiadając na pytania co jeżeli?

Podam wam teraz prosty przykład:

Jeżeli liczba jest większa od zera, to wypisz że jest dodatnia

zapis tego stwierdzenia za pomocą instrukcji if będzie wyglądał następująco:

UWAGA!!! PAMIĘTAJCIE O WCIĘCIACH!!!

liczba = 10
if
liczba>0:
print(
"jest dodatnia")

Jeżeli potrzebujemy rozwinąć naszą myśl o zapytanie „a co gdy warunek nie jest spełniony?” – używamy else.

Jeżeli liczba jest większa od zera, to wypisz że jest dodatniaw przeciwnym wypadku napisz, że nie jest dodatnia

liczba = 10
if
liczba>0:

print("jest dodatnia")
else:
print("jest ujemna")

Oczywiście instrukcje możemy zagnieżdżać jedna w drugiej.

Może zajść sytuacja, że przed użyciem else chcemy sprawdzić jeszcze jakieś inne warunki, wtedy przychodzi nam z pomocą instrukcja elif. (możemy stosować wiele elif)

liczba = 10
if
liczba>0:
print("jest dodatnia")
elif liczba==0:
print("podano 0")

else:
print("jest ujemna")

Python nie posiada konstrukcji switch.

 

Operator in oraz not

 
———————————————————-
operator in
———————————————————-
Operator in, służy do odnajdowania danego elementu pośród jakiegoś zestawu danych.
Można go wykorzystać zamiast sprawdzania warunków w instrukcji warunkowej.
Wykorzystamy przykład z gry papier kamień nożyce:
#przykład z wykorzystaniem listy
odp = input("Wybierz: papier, kamień lub nożyce: ")
odp = odp.lower()
options = ["papier", "kamień", "nożyce"]
if odp in options:
    print(f"Wybrałeś: {odp}")
else: print("Podałeś niepoprawną wartość.")
 
operatora in możemy używać w innych strukturach np. dictionary, tuple, set
 
———————————————————-
 operator not
———————————————————-
Operator not wykorzystujemy zamiast !
Ale nie stosujemy go wszędzie. Jeżeli porównujemy ze sobą 2 zmienne używamy !=
Przypomnę też, że operator is, służy do sprawdzania miejsca w pamięci – nie wartości.
Operator not stosujemy gdy chcemy zaprzeczyć np „!empty” zapisemy jako „not empty”
Analogicznie do przykładu z „in” możemy sprawdzić czy coś się nie znajduje np. na liście – „if sth not in [„list1″,”list2″,”list3″]”
 
 
cos = False
if not cos: print("nie jest") #jeżeli cos nie jest prawdą (if not True)
name = "Kama"
if name not in ["Ania","Kasia","Zosia"]:
    print("Nie ma na liście")
 

Zadania do wykonania:

Zadanie 1: Napisz program sprawdzający czy liczba jest parzysta.

Rozwiązanie:
a = 5
if a==0:
    print("podano 0")
elif a%2==0:
    print("liczba jest parzysta") 
else:
   print("liczba jest nieparzysta")

Zadanie 2: Porównaj ze sobą 2 dowolne liczby i wypisz która jest większa.

Rozwiązanie:
print("Zadanie 2: Porównaj ze sobą 2 dowolne liczby i wypisz która jest większa.")

a,b = 10, 5
warunek = a > b
print(f"porównujemy liczby {a} i {b}") 
if warunek:
    print(f"większa jest liczba a={a}") 
else:
   print(f"większa jest liczba b={b}")

Zadanie 3: Porównaj ze sobą 4 nie równe sobie liczby i wypisz największą.

Rozwiązanie:
print("Zadanie 3: Porównaj ze sobą 4 nie równe sobie liczby i wypisz największą.")

a,b,c,d = 10, 5, 18, 1
m=a
print(f"porównujemy liczby {a}, {b}, {c}, {d}") 
if b>m: m=b 
if c>m: m=c 
if d>m: m=d 
print(f"największa liczba to {m}")

Zadanie 4: Porównaj ze sobą 3 nie równe sobie liczby i wypisz je w kolejności od największej do najmniejszej.

Rozwiązanie:
print("Zadanie 4: Porównaj ze sobą 3 nie równe sobie liczby i wypisz je w kolejności od największej do najmniejszej.")

a,b,c = 10, 5, 18
print(f"porównujemy liczby {a}, {b}, {c}") 
min=a#zakładamy, że jest najmniejsza
if b<a and b<c: min=b 
if c<a and  c<b: min=c 
max=a#zakładamy, że jest największa
if b>max: max=b
if c>max: max=c
if a!=min and a!=max: mid=a
if b!=min and b!=max: mid=b
if c!=min and c!=max: mid=c
print(f"Posortowane liczby to: {max}, {mid}, {min}") 

Zadanie 5: Porównaj ze sobą 4 nie równe sobie liczby i wypisz je w kolejności od największej do najmniejszej.

Rozwiązanie:
print("Zadanie 5: Porównaj ze soba 4 nie równe sobie liczby i wypisz je w kolejności od największej do najmniejszej.")

a,b,c,d = 10, 5, 18, 1
print(f"porównujemy liczby {a}, {b}, {c}, {d}")
print("Szukamy najmniejszej z liczb") 
if a<b and a<c and a<d: l1=a #litera małe "l" jak liczba - to jest liczba 1 w skrócie: l1
elif b<a and b<c and b<d: l1=b
elif c<a and c<b and c<d: l1=c
else: l1=d
l4=a #zakładamy, że jest to ostatnia liczba
if b>l4: l4=b
if c>l4: l4=c
if d>l4: l4=d
if a!=l1 and b!=l4: m2=a
if b!=l1 and b!=l4:
    m1=b
    if m2 is None:
        m2=b
    else: m2=m2
if c!=l1 and c!=l4:
    m1=c
    if m2 is None:
        m2=b
    else: m2=m2
if d!=l1 and d!=l4: m1, m2 = d, m2 = m2
if m1>m2: l2=m2
else: l2=m1
if m1<m2: l3=m2
else: l3=m1
print(f"Posortowane liczby to: {l4}, {l3}, {l2}, {l1}") 

Zadanie 6: Zrealizuj kalkulator, który dla zadanych liczb w zależności od wartości zmiennej „wybor” wykonuje: mnożenie, dzielenie, odejmowanie, dodawanie.

Rozwiązanie:
print("kalkulator")
liczba1, liczba2 = 4,2
wybor = "/"
if wybor=="+": print(f"{liczba1}+{liczba2}={liczba1+liczba2}")
if wybor=="-": print(f"{liczba1}-{liczba2}={liczba1-liczba2}")
if wybor=="*": print(f"{liczba1}*{liczba2}={liczba1*liczba2}")
if wybor=="/": print(f"{liczba1}/{liczba2}={liczba1/liczba2}")

Zadanie 7: Napisz program, który dla danego punktu na płaszczyźnie sprawdzi, w której ćwiartce układu współrzędnych się on znajduje. Może jednak być tak, że punkt nie znajduje się w żadnej ćwiartce – leży na jednej z osi lub w środku układu współrzędnych. Wówczas program powinien to stwierdzić. Na wejściu znajdują się dwie liczby całkowite oddzielone spacją, x i y(−1 000 000 000≤x, y≤1 000 000 000), oznaczające współrzędne danego punktu. Jeżeli podany punkt nie leży na żadnej z osi, Twój program powinien wypisać: I, II, III lub IV, w przypadku gdy punkt należy do, odpowiednio, pierwszej, drugiej, trzeciej lub czwartej ćwiartki układu współrzędnych. Jeżeli punkt leży w środku układu współrzędnych, program powinien wypisać liczbę 0. W przeciwnym razie, program powinien wypisać OX (duże O i duże X), jeśli punkt leży na osi X, a OY – jeśli punkt leży na osi Y.
Przykład
Dla danych wejściowych:
5 7
poprawnym wynikiem jest:
I
a dla danych wejściowych:
0 -1000000000
poprawnym wynikiem jest:
OY
natomiast dla danych wejściowych:
0 0

Zadanie 8: Twoim zadaniem jest stwierdzić, czy z trzech odcinków o podanych długościach można zbudować trójkąt o dodatnim polu. Pierwszy i jedyny wiersz wejścia zawiera trzy liczby naturalne a,b,c(1≤a, b, c≤1 000 000 000), oddzielone spacjami. Liczby te oznaczają długości trzech odcinków. Twój program powinien wypisać jedno słowo TAK lub NIE, w zależności od tego, czy z odcinków o długościach takich jak na wejściu można zbudować niezdegenerowany trójkąt, czyli trójkąt o dodatnim polu.
Przykład
Dla danych wejściowych:
8 7 5
poprawnym wynikiem jest:
TAK
a dla danych wejściowych:
1 10 2
poprawnym wynikiem jest:
NIE
oraz dla danych wejściowych:
4 4 8
poprawnym wynikiem jest:
NIE

Zadanie 9: Napisz program wyświetlający na podstawie zmiennej całkowitej „nr” nazwę miesiąca słownie.
 
Zadanie 10: Napisz program, który na podstawie zmiennej całkowitej ocena wyświetla jedną z informacji: brak promocji do następnej klasy, promocja do następnej klasy, promocja z oceną celującą.
 
Zadanie 11: Napisz program, który dla przekazanej jako parametr całkowitej oceny wyświetli ją słownie.
 
Zadanie 12: Napisz program, który wczytuje kwotę w złotych, a następnie przelicza ją na taka walutę jaką wybierze użytkownik: funty, dolary, euro….
 
Zadanie 13: Napisz program, który przelicza metry na inne jednostki miary.
 
Zadanie 14: Podana jest nazwa pliku:

filename =’01012020_sales.xlsx’

Sprawdź, czy nazwa pliku jest z rozszerzeniem 'xlsx’. Wydrukuj do konsoli 'TAK’ jeśli to prawda, przeciwnie 'NIE’.

Zadanie 15: Podany jest poniższy łańcuch znaków:

code = 'DSVNDOICSN’

Sprawdź czy zmienna code składa się tylko z dużych liter. Jeśli tak wydrukuj do konsoli 'TAK’.

Zadanie 16: Podana jest poniższa zmienna:

number =0

Zbadaj czy zmienna number jest obiektem typu int (instancją klasy wbudowanej int). Wydrukuj 'TAK’ jeśli to prawda, przeciwnie 'NIE’.

Wskazówka: Użyj funkcji isinstance().

Zadanie 17: Podane jest poniższe hasło:

password =’cskdnjcasa#!’

Sprawdź, czy hasło ma wymaganą długość 11 znaków. Jeżeli tak, wydrukuj 'Hasło poprawne’, w przeciwnym razie 'Hasło zbyt krótkie’.

Zadanie 18: Podane jest poniższe hasło:

password =’cskdnjcasa#!’

Sprawdź, czy hasło ma wymaganą długość 11 znaków oraz zwiera znak specjalny ’!’. Jeżeli tak, wydrukuj 'Hasło poprawne’, w przeciwnym razie 'Hasło niepoprawne’.

Zadanie 19: Podana jest poniższa lista:

project_ids = [’02134′, '24253′]

Sprawdź czy następujące id projektu:

project_id = '02135′

występuje w liście project_ids. Jeśli nie dodaj id tego projektu do listy. Następnie wydrukuj listę project_ids do konsoli.

Zadanie 20:

Podany jest słownik:

project_ids = {

’01’: 'open’, 

’02’: 'new’,

’03’: 'in progress’,

’04’: 'completed’

}

Wykorzystując instrukcję warunkową sprawdź, czy status projektu z id = ’02’ jest ustawiony na 'new’. Jeśli tak, zmień ten status na 'open’.

W odpowiedzi wydrukuj słownik project_ids do konsoli.

Zadanie 21: Napisz program, który sprawdzi czy podany element:

item = '001′

występuje w liście:

items = [’001′, '000′, '003′, '005′, '006′]

Jeżeli tak, to usuń ten element z listy. W odpowiedzi wydrukuj otrzymaną listę do konsoli.