docs.python.org, The Python Tutorial, rozdz. 4.1 (if Statements) · Podręcznik Informatyka na czasie 2 (Nowa Era), s. 224 (dodatek 7, zagnieżdżanie instrukcji warunkowych)
Część 1 · Jak działa elif
Pierwszy prawdziwy wygrywa
Python sprawdza warunki po kolei, z góry na dół. Przy pierwszym prawdziwym wykonuje jego blok i kończy całą instrukcję: pozostałych warunków nawet nie czyta.
Skąd nazwa:elif to skrót od angielskiego „else if”, czyli „w przeciwnym razie jeśli”. Tutorial Pythona podaje, że części elif może być dowolnie wiele, a else jest opcjonalne.
docs.python.org, The Python Tutorial, rozdz. 4.1 (if Statements)
Liczba 95 spełnia wszystkie trzy warunki. Python bierze pierwszy z góry, więc dalsze progi są nieosiągalne: ocena 4 i 5 nie wyjdą nigdy, dla żadnej liczby punktów.
Reguła: gdy warunki się nakładają, na górze stawiamy ten najtrudniejszy do spełnienia. Przy progach punktowych: od największego do najmniejszego.
docs.python.org, The Python Tutorial, rozdz. 4.1 (if Statements)
Część 2 · Operatory logiczne
Nie, lub, i
Jeden warunek często nie wystarcza. Trzy operatory logiczne łączą warunki w jeden większy. Python zapisuje je zwykłymi angielskimi słowami.
Nazwa
Zapis
Kiedy całość jest prawdą
Przykład
koniunkcja („i”)
and
tylko gdy oba warunki są prawdą naraz
dla x równego 3 i y równego 2 zapis x < 5 and y > 1 daje True
alternatywa („lub”)
or
gdy choć jeden jest prawdą; fałszem tylko, gdy oba fałszywe
dla x równego 5 i y równego 5 zapis x == 5 or y == 5 daje True
zaprzeczenie („nieprawda, że”)
not
gdy warunek po nim jest fałszywy
dla x równego 3 zapis not x == 4 daje True
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 222 (dodatek 5, tabela operatorów logicznych w języku Python)
Część 2 · Wartości logiczne
Cztery przypadki i granica
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 220–221 (dodatek 5, tabela wartości logicznych, zaprzeczenie)
Część 2 · Zagnieżdżenie
Pytanie w środku pytania
if product == "buty":
if color == "zielony":
discount = 0.5
else:
discount = 0.2
else:
discount = 0.1
Tu pytania są dwa i jedno zależy od drugiego: kolor ma znaczenie tylko dla butów. Dlatego drugi if siedzi w środku pierwszego, z podwójnym wcięciem.
elif używamy, gdy jedna wartość dzieli się na kilka przedziałów. Zagnieżdżenia, gdy drugie pytanie ma sens dopiero po odpowiedzi na pierwsze. To samo da się zapisać jako product == "buty" and color == "zielony".
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 224 (dodatek 7, zagnieżdżone instrukcje warunkowe, przykład z rabatem)
Ćwiczenie · przy komputerze · 10 minut
Ćwiczenie: trzy programy z elif
Każdy program zapisz w osobnym pliku i uruchom dla wszystkich podanych liczb. Sprawdź, czy wynik zgadza się z tym, co sam policzyłeś.
Plik grade.py: wczytaj punkty i wypisz ocenę. Progi: od 90 ocena 5, od 75 ocena 4, od 50 ocena 3, niżej ocena 1. Sprawdź dla 95, 80, 60 i 20.
Plik ticket.py: wczytaj wiek i wypisz cenę biletu. Poniżej 7 lat 0 zł, poniżej 18 lat 10 zł, od 65 lat 12 zł, w pozostałych przypadkach 20 zł. Sprawdź dla 5, 15, 30 i 70.
Plik temp.py: wczytaj temperaturę i użyj and. Dla wartości od 0 do 25 włącznie wypisz „W normie”, w przeciwnym razie „Poza zakresem”. Sprawdź dla -3, 15 i 30.
Jak to sprawdzić
Uruchom plik i wpisz liczbę, a potem wciśnij Enter. Jeden program, jedno uruchomienie, jedna liczba: żeby sprawdzić cztery wartości, uruchamiasz go cztery razy.
Sprawdzenie
Trzy pytania na koniec
Ile części elif wolno dopisać do jednego if i ile bloków wykona program?
Czy kolejność warunków w ciągu elif jest dowolna?
Jak zapisać warunek „temperatura jest z przedziału od 0 do 25 włącznie”?
Podsumowanie
A jak to wygląda w produkcji?
Na lekcji
W produkcji
Status
Ciąg elif z progami
Wysokość rabatu, taryfa za przesyłkę, próg darmowej dostawy: firmowe reguły to najczęściej właśnie ciąg progów
codziennie
Progi wpisane w kod
Progi trzyma się w ustawieniach albo w bazie, bo zmieniają się częściej niż sam program
zmienione
and i or w jednym warunku
Warunek dłuższy niż dwa człony przenosi się do osobnej funkcji z nazwą, żeby dało się go przeczytać
rozszerzane
Kolejność warunków
Nieosiągalna gałąź to typowy błąd zgłaszany przez narzędzia sprawdzające kod przed wysłaniem go do zespołu
narzędzia
W praktyce: wiele języków ma osobną instrukcję switch albo case do wyboru jednej z wielu dróg. Tutorial Pythona podaje, że ciąg if, elif, elif zastępuje w Pythonie tamtą instrukcję.
docs.python.org, The Python Tutorial, rozdz. 4.1 (if Statements)