Menu
Русский

Python if, elif, else: условные операторы и тернарные выражения

Как работают операторы if, elif и else в Python — включая truthy-значения, вложенные условия и тернарное выражение if.

Решение, по форме похожее на английскую фразу

if — первый инструмент, к которому тянется большинство программ. Он даёт коду выбирать один путь, когда условие истинно, и другой, когда нет. Python записывает это прямо:

main.py
Output
Click Run to see the output here.

Две строки, одно решение. Строка с if заканчивается двоеточием. Строка ниже с отступом — тело if, код, который выполняется, если условие истинно. Если бы hour был 15, тело было бы полностью пропущено, и ничего бы не напечаталось.

Отступы здесь — и есть структура. Python понимает, какие строки принадлежат if, по ведущим пробелам. Соглашение — четыре пробела на уровень; будь последователен.

Добавляем ветку else

Часто что-то должно произойти в любом случае: это — когда условие истинно, то — иначе. Для этого есть else:

main.py
Output
Click Run to see the output here.

У строки с else нет условия — она ловит всё, что не поймал if.

Несколько ветвей через elif

Когда путей больше двух, между if и else ставят elif («else if»):

main.py
Output
Click Run to see the output here.

Python идёт по условиям сверху вниз и выполняет блок первого, которое оказалось истинным. Остальные пропускаются. Этот порядок сверху вниз важен: если поставить score >= 60 перед score >= 90, все получат D — выигрывает первое истинное условие.

Аккуратная структура, которую стоит держать в голове: условия должны быть взаимоисключающими для любого входа, а порядок должен отражать, как ты естественно думаешь о задаче. Самые специфичные случаи — первыми, самые общие — последними.

Truthy-значения в условиях

Выражение в if не обязано вычисляться в буквальные True или False. Python принимает любое значение и сам решает его truthiness:

main.py
Output
Click Run to see the output here.

if items: читается как «если в списке что-то есть». Falsy-значения такие:

  • False
  • 0, 0.0
  • None
  • Пустые контейнеры: "", [], {}, set(), ()

Всё остальное — truthy. Truthy-проверка делает код естественнее, с одной оговоркой: если ноль — осмысленное значение (например, счётчик, который легитимно равен нулю), сравнивай явно через is not None или != 0, чтобы не путать «пусто» и «ноль».

Комбинирование условий

and, or и not позволяют собирать составные условия:

main.py
Output
Click Run to see the output here.

Цепочки сравнений аккуратнее явного and, когда границы разделяют общее значение:

main.py
Output
Click Run to see the output here.

Это то же самое, что 18 <= age and age < 65, но читается как математическое неравенство.

Вложенные if

if можно вкладывать в if. Это законно и иногда — самая ясная структура, но это и основной способ, которым условный код становится трудным для чтения. Если ты оказался в трёх уровнях вложенности, подумай о том, чтобы выпрямить код ранними return-ами (когда начнёшь писать функции) или объединить условия:

main.py
Output
Click Run to see the output here.
main.py
Output
Click Run to see the output here.

Оба работают. Выбирай тот вариант, который лучше читается для человека, который видит этот код впервые.

Тернарное выражение

Когда ты просто хочешь, чтобы значение было одним из двух в зависимости от условия, у Python есть компактная форма:

main.py
Output
Click Run to see the output here.

Читается слева направо: «warm, если temp не меньше 70, иначе cool». Отлично для коротких присваиваний либо-либо. Прекращай использовать, как только ветви становятся длинными или содержат несколько операций — тогда полный блок if/else легче глазам.

if — выражение только в одном месте

В отличие от некоторых языков, сам оператор if в Python значение не возвращает. Только тернарная форма. Нельзя написать x = if ...:, как в Rust или Kotlin. Нужно условное значение — тернарник; нужно условное поведение — полный блок if.

Маленький полный пример

Короткая программа, классифицирующая температуру:

main.py
Output
Click Run to see the output here.

Заметь, что логика — почти полностью решение, каким должен быть advice. С одного взгляда видно, какому диапазону температур соответствует какое сообщение. Это та форма, к которой стоит стремиться, когда пишешь условия — каждая ветвь должна быть маленькой, а общее намерение — очевидным.

Что дальше

Условия позволяют коду выбирать путь. Циклы — повторять. Дальше — циклы for, самый частый цикл в Python с большим отрывом и естественный напарник коллекций, с которыми ты встретишься через несколько страниц.

Часто задаваемые вопросы

Как работает оператор if в Python?

if condition: и блок с отступом ниже выполняется только если условие истинно. Необязательные ветви elif (else if) проверяют дополнительные условия, а необязательный else срабатывает, когда ничто другое не подошло.

Есть ли в Python switch-оператор?

В Python 3.10 добавили match/case для структурного паттерн-матчинга, который покрывает большинство сценариев switch и больше. Для простого ветвления цепочка if/elif по-прежнему распространена и вполне нормальна.

Что такое тернарный if в Python?

Однострочное условное выражение: result = a if condition else b. Читается слева направо — «вычисли a, когда condition истинно, иначе вычисли b». Удобно для коротких присваиваний либо-либо; теряет читаемость, как только ветви становятся длинными.

Учитесь программировать с Coddy

НАЧАТЬ