Справочник по Python · модуль 2 · условия
Глава 2.4
Операторы ветвления:
if, elif, else
До сих пор программа выполняла каждую строку сверху вниз. Ветвление меняет ход работы: условие определяет, какой блок будет выполнен, а какой пропущен.
- Категория
- Управление выполнением
- Уровень
- Начальный
- Связанные темы
- bool, сравнения, составные условия
- Зачем это знать
- Выполнять разные действия в разных ситуациях
§1Что такое ветвление
Ветвление — конструкция, которая выбирает действия по результату условия. Если условие равно True, выполняется один блок; если False, этот блок пропускается или выбирается другая ветка.
условие → True → выполнить действие
→ False → пропустить или выбрать другое
Условием может быть любое выражение, которое даёт логический результат: age >= 18, password == expected, is_ready.
§2Оператор if
if переводится как «если». Блок под ним выполняется только при истинном условии.
temperature = 28 if temperature > 25: print("Сегодня жарко") print("Проверка завершена")
Сегодня жарко Проверка завершена
Последний print() стоит без отступа, поэтому не относится к if и выполняется при любом результате проверки.
§3Двоеточие и отступ
После условия ставится двоеточие. Все строки выбранного блока имеют одинаковый отступ — обычно четыре пробела.
if balance >= price: balance -= price print("Покупка оплачена") print("Текущий баланс:", balance)
В Python отступ показывает, какие строки входят в блок. Лишний или пропущенный отступ меняет работу программы либо вызывает ошибку.
§4Ветка else
else означает «иначе» и выполняется, когда условие if ложно. У else нет собственного условия.
age = 17 if age >= 18: print("Доступ разрешён") else: print("Доступ закрыт")
В конструкции if / else выполняется ровно одна ветка: обе одновременно выполниться не могут.
§5Дополнительные ветки elif
elif означает «иначе, если». Он добавляет ещё одну проверку между if и необязательным else.
grade = 85 if grade >= 90: print("Отлично") elif grade >= 80: print("Хорошо") elif grade >= 70: print("Удовлетворительно") else: print("Нужно повторить тему")
Хорошо
§6Порядок проверок
Python проверяет ветки сверху вниз и останавливается на первой истинной. Это относится ко всей связанной цепочке if / elif / else.
- Сначала проверяется условие
if. Если оно истинно, выполняется его блок: условияelifуже не вычисляются, аelseпропускается. - Если
ifоказался ложным, условияelifпроверяются по очереди сверху вниз. - После первого истинного
elifего блок выполняется: условия оставшихсяelifуже не вычисляются, аelseпропускается. - Если все условия ложны, выполняется
else. Если его нет, вся цепочка пропускается.
Выполняется не более одной ветки. После первой истинной ветки остальные условия не проверяются.
Поэтому частные или более строгие условия ставят раньше общих.
if score >= 90: grade = "A" elif score >= 80: grade = "B" elif score >= 70: grade = "C"
Если начать с score >= 70, то значение 95 попадёт в первую ветку и до проверки на 90 программа не дойдёт.
Цепочка отличается от нескольких отдельных if. Каждый отдельный if проверяется независимо, поэтому могут выполниться сразу несколько блоков.
number = 10 if number > 0: print("Положительное число") if number > 5: print("Число больше пяти")
Положительное число Число больше пяти
§7Полный пример
Определим стоимость доставки по сумме заказа.
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 >= 18 | SyntaxError: нет двоеточия | 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: actionif condition: action_aelse: action_bif ...:elif ...:else:первая истинная веткаИтог главы
if начинает проверку, elif добавляет варианты, else обрабатывает оставшийся случай. Двоеточие открывает блок, а отступ показывает его границы. Цепочка просматривается сверху вниз и выполняет не более одной ветки.