Kilka if ≠ if/elif/else
Bardzo częsty problem wśród początkujących: kilka oddzielnych if może zadziałać wszystkie naraz, a w łańcuchu elif — tylko jeden.
Blok poleceń i niewidoczny wskaźnik
Gałęzia warunków może zawierać wiele poleceń, jak już widzieliśmy. Przydatne
Wyobraź sobie, że Python trzyma niewidzialny „wskaźnik” if
wybiera, na którą gałąź „wejść”.
Przepływ sterowania
Przepływ sterowania — to kolejność, w jakiej faktycznie wykonywane są polecenia programu. Do tej rozdziału była to prawie zawsze prosta linia od góry do dołu. Teraz może się rozwijać. W rozdziale 10 nauczy się też, jak cofnąć się — Powtarzaj się.
Wiele if NIE jest tym samym co if/elif/else
To jedno z najczęstszych nieporozumień wśród początkujących — przyjrzyjmy się konkretnemu przykładowi:
temperature = 30
if temperature > 20:
print(„ciepło”)
if temperature > 25:
print(„gorący”)
# OBA warunki są prawdziwe –
# OBIE linie się wydrukują!
temperature = 30
if temperature > 25:
print(„gorący”)
elif temperature > 20:
print(„ciepło”)
# tylko JEDNA gałąź
# w tym łańcuchu wykonam
if jest sprawdzana niezależnie od pozostałych — Python może wykonać kilka takich bloków z rzędu. I w łańcuchu if/elif/else wykonuje się DOKŁADNIE JEDNA gałąź — pierwsza prawdziwa. To bardzo częste zamieszanie u początkujących: jeśli potrzebny jest „wybór jednej opcji spośród kilku” — potrzebny jest dokładnie łańcuch elif, a nie kilka osobnych if.Weź score = 85. Zbuduj wariant z trzema niezależnymi if (score > 50, score > 70, score > 90) oraz wariant z łańcuchem elif-, w tych samych warunkach. Porównaj, ile linii wydrukuje każdy wariant.