Модуль 2 · Условия

Справочник по Python · модуль 2 · условия

Глава 2.4

2.4

Операторы ветвления:
if, elif, else

До сих пор программа выполняла каждую строку сверху вниз. Ветвление меняет ход работы: условие определяет, какой блок будет выполнен, а какой пропущен.

Категория
Управление выполнением
Уровень
Начальный
Связанные темы
bool, сравнения, составные условия
Зачем это знать
Выполнять разные действия в разных ситуациях

§1Что такое ветвление

Ветвление — конструкция, которая выбирает действия по результату условия. Если условие равно True, выполняется один блок; если False, этот блок пропускается или выбирается другая ветка.

Схемаусловие выбирает путь
условие → True  → выполнить действие
        → False → пропустить или выбрать другое

Условием может быть любое выражение, которое даёт логический результат: age >= 18, password == expected, is_ready.

§2Оператор if

if переводится как «если». Блок под ним выполняется только при истинном условии.

main.pyодна ветка
temperature = 28

if temperature > 25:
    print("Сегодня жарко")

print("Проверка завершена")
Выводtemperature = 28
Сегодня жарко
Проверка завершена

Последний print() стоит без отступа, поэтому не относится к if и выполняется при любом результате проверки.

§3Двоеточие и отступ

После условия ставится двоеточие. Все строки выбранного блока имеют одинаковый отступ — обычно четыре пробела.

Pythonграницы блока задаёт отступ
if balance >= price:
    balance -= price
    print("Покупка оплачена")

print("Текущий баланс:", balance)
Отступ — часть синтаксиса

В Python отступ показывает, какие строки входят в блок. Лишний или пропущенный отступ меняет работу программы либо вызывает ошибку.

§4Ветка else

else означает «иначе» и выполняется, когда условие if ложно. У else нет собственного условия.

main.pyдва возможных пути
age = 17

if age >= 18:
    print("Доступ разрешён")
else:
    print("Доступ закрыт")

В конструкции if / else выполняется ровно одна ветка: обе одновременно выполниться не могут.

§5Дополнительные ветки elif

elif означает «иначе, если». Он добавляет ещё одну проверку между if и необязательным else.

main.pyнесколько вариантов
grade = 85

if grade >= 90:
    print("Отлично")
elif grade >= 80:
    print("Хорошо")
elif grade >= 70:
    print("Удовлетворительно")
else:
    print("Нужно повторить тему")
Выводgrade = 85
Хорошо

§6Порядок проверок

Python проверяет ветки сверху вниз и останавливается на первой истинной. Это относится ко всей связанной цепочке if / elif / else.

  1. Сначала проверяется условие if. Если оно истинно, выполняется его блок: условия elif уже не вычисляются, а else пропускается.
  2. Если if оказался ложным, условия elif проверяются по очереди сверху вниз.
  3. После первого истинного elif его блок выполняется: условия оставшихся elif уже не вычисляются, а else пропускается.
  4. Если все условия ложны, выполняется else. Если его нет, вся цепочка пропускается.
Правило цепочки

Выполняется не более одной ветки. После первой истинной ветки остальные условия не проверяются.

Поэтому частные или более строгие условия ставят раньше общих.

Pythonсначала высокая граница
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"

Если начать с score >= 70, то значение 95 попадёт в первую ветку и до проверки на 90 программа не дойдёт.

Цепочка отличается от нескольких отдельных if. Каждый отдельный if проверяется независимо, поэтому могут выполниться сразу несколько блоков.

main.pyдва независимых if
number = 10

if number > 0:
    print("Положительное число")

if number > 5:
    print("Число больше пяти")
Выводобе проверки выполнены
Положительное число
Число больше пяти

§7Полный пример

Определим стоимость доставки по сумме заказа.

main.pyтариф доставки
order_total = 3200

if order_total >= 5000:
    delivery = 0
elif order_total >= 2000:
    delivery = 250
else:
    delivery = 500

final_total = order_total + delivery
print(f"Доставка: {delivery} руб.")
print(f"К оплате: {final_total} руб.")
Выводрезультат запуска
Доставка: 250 руб.
К оплате: 3450 руб.

§8Частые ошибки

Что написаноЧто произойдётКак правильно
if age >= 18SyntaxError: нет двоеточияif age >= 18:
if age = 18:SyntaxError: присваивание вместо сравненияif age == 18:
строка после if без отступаIndentationErrorсделать отступ в четыре пробела
else age < 18:SyntaxError: у else нет условияelif age < 18: или просто else:
сначала score >= 70, потом >= 90высокие оценки попадут в первую веткурасположить границы от большей к меньшей

§9Проверьте себя

Что выполнится, если условие после if равно False и ветки else нет?

Блок if будет пропущен, затем программа продолжит работу со строки без отступа после конструкции.

Сколько веток выполнится в одной цепочке if / elif / else?

Не более одной: первой, условие которой истинно. Если ни одно условие не подошло, выполнится else, если он есть.

Обязателен ли else?

Нет. Можно использовать только if или цепочку if / elif.

§10Шпаргалка

Одна проверкаif condition: action
Два путиif condition: action_aelse: action_b
Несколько путейif ...:elif ...:else:
Правилопервая истинная ветка

Итог главы

if начинает проверку, elif добавляет варианты, else обрабатывает оставшийся случай. Двоеточие открывает блок, а отступ показывает его границы. Цепочка просматривается сверху вниз и выполняет не более одной ветки.

Глава 2.4 · Операторы ветвления: if, elif, else · Справочник по Python Автор: Макаров Максим Николаевич