if else в Python: выбор из двух вариантов
Автор: Казачкин Даниил Михайлович · Обновлено
Связка if–else описывает два взаимоисключающих пути. Сначала вычисляется условие после if. При True выполняется первый блок, при False — блок else. За один проход срабатывает ровно одна из двух веток, после чего управление сходится на общей строке.
Чётное или нечётное
number = 17
if number % 2 == 0:
label = 'чётное'
else:
label = 'нечётное'
print(number, '—', label)Результат:
17 — нечётноеОстаток от деления на 2 равен нулю только для чётных целых чисел. Обе ветки присваивают label, поэтому после конструкции имя гарантированно существует. Такой подход удобнее двух независимых if: условия не вычисляются повторно, а взаимоисключение видно из структуры.
Что означает else
После else нельзя написать дополнительное условие: слово означает «во всех остальных случаях». Двоеточие и отступ обязательны. Ошибка возникает, если поставить обычную строку между завершением блока if и else — эти части должны идти подряд на одном уровне.
Смысловая ловушка — сделать ветки несимметричными. Если переменная создаётся только внутри if, при ложном условии последующий код получит NameError. Либо задайте значение в обеих ветках, либо создайте разумное значение до проверки.
Проверка двух исходов
Прочитайте пароль. При точном совпадении со строкой python2026 выведите «доступ открыт», иначе — «доступ закрыт». После ветвления напечатайте «попытка завершена». Проверьте правильную строку, неправильную строку и вариант с заглавной буквой. Затем измените задачу: по введённому числу выведите «положительное» или «не положительное». Объясните, почему ноль попал во вторую ветку и чем формулировка отличалась бы от проверки «отрицательное».
Симметрия двух исходов
Реализуйте проверку доступности места: если свободных мест больше нуля, сформировать сообщение о бронировании, иначе сообщить об отсутствии. В обеих ветках присвойте переменную message и напечатайте её после конструкции. Проверьте 1 и 0, затем отрицательное значение как признак ошибочных данных. Не превращайте его автоматически в обычный else-случай: добавьте предварительную проверку или уточните контракт. После этого перепишите решение двумя независимыми if и покажите на бумаге, при каких условиях подход перестаёт гарантировать один исход. Структура кода должна отражать взаимоисключение вариантов.
Практикум: чётность с двумя исходами
Определите чётность введённого целого и выведите одно из двух сообщений. Проверьте 0, положительное и отрицательное нечётное число. До запуска вычислите остаток каждого значения при делении на 2. Убедитесь, что ровно одна ветка выполняется и общий завершающий текст расположен после конструкции. Затем измените задачу: число считается допустимым, если оно положительное и чётное; это уже отдельное условие, а не третья ветка прежней классификации.
Контрольная точка
Почему две независимые конструкции if не всегда эквивалентны if/else? Приведите правила, которые могут быть одновременно истинными, и объясните, сколько сообщений появится.
Частые вопросы
Ноль является чётным?
Да, потому что делится на 2 без остатка: 0 % 2 == 0. Знак числа также не меняет определение чётности; важен остаток при делении.