Несколько if ≠ if/elif/else
Очень частая путаница у новичков: несколько отдельных if могут сработать все разом, а в цепочке elif — только один.
Блок команд и невидимый указатель
Ветка условия может содержать несколько команд — мы это уже видели. Полезно
представлять, что Python держит невидимый «указатель»: какую команду выполнить следующей.
В линейной программе он просто идёт вниз строка за строкой; при if
он выбирает, в какую ветку «зайти».
Поток управления
Поток управления — это порядок, в котором на самом деле выполняются команды программы. До этой главы он был почти всегда прямой линией сверху вниз. Теперь он может разветвляться. В главе 10 он научится ещё и возвращаться назад — повторяться.
Несколько if — это НЕ то же самое, что if/elif/else
Это одна из самых частых путаниц у новичков — разберём её на конкретном примере:
temperature = 30
if temperature > 20:
print("тепло")
if temperature > 25:
print("жарко")
# ОБА условия истинны —
# ОБЕ строки напечатаются!
temperature = 30
if temperature > 25:
print("жарко")
elif temperature > 20:
print("тепло")
# только ОДНА ветка
# в этой цепочке выполнится
if проверяется независимо от остальных — Python может выполнить несколько таких блоков подряд. А в цепочке if/elif/else выполняется РОВНО ОДНА ветка — первая истинная. Это очень частая путаница у новичков: если нужен «выбор одного варианта из нескольких» — нужна именно цепочка elif, а не несколько отдельных if.Возьмите score = 85. Постройте вариант с тремя независимыми if (score > 50, score > 70, score > 90) и вариант с elif-цепочкой на тех же условиях. Сравните, сколько строк напечатает каждый вариант.