7

elif – więcej niż dwie możliwe drogi

Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.

Czego się nauczysz

Na poprzedniej lekcji program wybierał jedną z dwóch możliwości. Ale ocena szkolna ma sześć stopni, a rok cztery pory. „Zdane albo niezdane” nie zawsze wystarcza – do tego służy elif.

Po tej lekcji:

Budowa łańcucha if – elif – else

Między if a else można wstawić dowolnie wiele bloków elif. Każdy ma własny warunek i własny zestaw poleceń. Nazwa to skrót od angielskiego „else if”, czyli „a jeśli nie, to sprawdź, czy…”.

ocena = 4
if ocena == 6:
    print("Celujacy")
elif ocena == 5:
    print("Bardzo dobry")
elif ocena == 4:
    print("Dobry")
else:
    print("Nizej")

Python sprawdza warunki po kolei, od góry. Pierwszy, który okaże się prawdziwy, wykonuje swój blok. Wszystkie pozostałe są pomijane – nawet jeśli też byłyby prawdziwe.

Z całego łańcucha wykona się dokładnie jeden blok. Nigdy dwa.

Kolejność warunków potrafi zepsuć program

Przy porównaniach typu „większe lub równe” kilka warunków może być prawdziwych jednocześnie. Wykona się ten, który stoi wyżej.

# ŹLE
if ocena >= 3:
    print("Zdane")
elif ocena >= 5:
    print("Bardzo dobrze")   # nigdy się nie wykona

# DOBRZE
if ocena >= 5:
    print("Bardzo dobrze")
elif ocena >= 3:
    print("Zdane")

W złej wersji ocena 5 wpada w pierwszy warunek >= 3 i program wypisuje „Zdane”. Do drugiej gałęzi nigdy nie dojdzie.

Reguła: przy warunkach zachodzących na siebie zaczynaj od najbardziej szczegółowego – tego, który spełnia najmniej wartości. Ogólne zostawiaj na koniec.

Ten błąd nie daje żadnego komunikatu. Program działa, tylko wypisuje nie to, co trzeba – dlatego trudno go wykryć.

Warunek w warunku

Wewnątrz bloku warunkowego wolno umieścić następny warunek. Trzeba tylko pamiętać o dodatkowym poziomie wcięcia – kolejne cztery spacje.

if wiek >= 18:
    if ma_bilet:
        print("Wejscie OK")
    else:
        print("Kup bilet")
else:
    print("Za mlody")

Zewnętrzny warunek musi być spełniony, żeby wewnętrzny w ogóle został sprawdzony.

Nie zagnieżdżaj bez potrzeby. Dwa poziomy są zrozumiałe, cztery już nie. Bardzo często zamiast zagnieżdżania wystarczy jeden warunek z operatorem and – poznasz go na następnej lekcji.

Spróbuj sam

W kodzie z lekcji są dwie funkcje: ocen_zle i ocen_dobrze. Uruchom program i porównaj ich wyniki dla 95 punktów – to dokładnie pułapka kolejności warunków. Potem zmień liczbę punktów i sprawdź ponownie.

Zadania z lekcji:

  1. Utwórz zmienną ocena z liczbą od 1 do 6. Wypisz jej słowną nazwę: celujący, bardzo dobry, dobry, dostateczny, dopuszczający, niedostateczny.
  2. Utwórz zmienną temperatura. Wypisz „Mroz” poniżej zera, „Zimno” do 10 stopni, „Cieplo” do 20, „Goraco” powyżej. Uważaj na kolejność warunków.
  3. Utwórz zmienną miesiac z liczbą od 1 do 12. Wypisz porę roku. Grudzień, styczeń i luty to zima.
  4. Napisz program z zagnieżdżonym warunkiem: sprawdź najpierw, czy liczba jest dodatnia, a potem czy jest parzysta. Wypisz odpowiedni komunikat dla każdego z trzech możliwych przypadków.

Sprawdź się

Na następnej lekcji: operatory logiczne and, or i not. Zamiast zagnieżdżać warunki jeden w drugim, połączysz je w jednej linii.

Notatki

PDF
Zadania utrwalające Karta pracy do tej lekcji: zadania sprawdzające i domowe do samodzielnego zrobienia w swoim edytorze · 7 stron.
Zadania utrwalające – elif – więcej niż dwie możliwe drogi
Strona 1 z 7 Strona 2 z 7 Strona 3 z 7 Strona 4 z 7 Strona 5 z 7 Strona 6 z 7 Strona 7 z 7

Prezentacja

Slajd 1 z 7
1 / 7

Kod

Otwórz kod, zmieniaj go i uruchamiaj na stronie – np. usuń # z linii oznaczonej jako błąd i zobacz, co się stanie. „Przywróć” wraca do wersji z lekcji.

PY
demo_07_elif.py Kod z lekcji – otwórz, zmieniaj i uruchamiaj; wynik zobaczysz obok kodu.
demo_07_elif.py
Wynik programu
Kliknij „Uruchom”, żeby zobaczyć tutaj wynik programu.