Разберём, как в Python строить ветвления — чтобы код делал разные вещи в зависимости от условий. Без лишней теории: только примеры и типичные ситуации, которые реально встречаются в работе.
Базовый if: когда нужно одно условие
Самый простой случай: если условие верно — делаем что‑то, если нет — ничего не делаем.
age = 18 if age >= 18: print("Доступ разрешён")
Здесь age >= 18 — это условие. Оно возвращает True или False. Если True, выполняется блок кода под if.
Важно: после условия ставится двоеточие :, а тело блока обязательно с отступом (обычно 4 пробела).
if + else: два варианта
Когда нужны два пути: «если да — то это», «если нет — то вот это».
balance = 50 if balance >= 100: print("Можно купить премиум") else: print("Не хватает средств")
else срабатывает только если условие в if оказалось ложным. else без if не бывает.
elif: когда условий больше двух
Если вариантов больше двух, используют elif (сокращение от else if). Проверки идут сверху вниз: как только одно условие стало True, этот блок выполняется, а остальные пропускаются.
score = 85 if score >= 90: grade = "A" elif score >= 80: grade = "B" elif score >= 70: grade = "C" else: grade = "D" print(f"Оценка: {grade}")
Для score = 85 сработает второй блок (>= 80), дальше проверка не пойдёт.
Частая ошибка: писать несколько отдельных if вместо elif, когда логика должна быть взаимоисключающей:
# Плохо: все условия проверяются независимо if score >= 80: grade = "B" if score >= 70: grade = "C" # может выполниться одновременно с предыдущим
В этом примере при score = 85 оба блока сработают, и в итоге останется "C" — не то, что планировалось.
Как правильно сравнивать
В условиях чаще всего используют операторы сравнения:
==— равно!=— не равно<,>— меньше, больше<=,>=— меньше или равно, больше или равно
status = "active" if status == "active": print("Пользователь активен")
Важно: в Python = — это присваивание, а == — сравнение. Если написать if status = "active":, будет синтаксическая ошибка.
Условия с логическими операторами: and, or, not
Когда нужно комбинировать несколько проверок.
and — оба условия должны быть истинными
age = 20 has_license = True if age >= 18 and has_license: print("Можно управлять автомобилем")
or — достаточно одного из условий
is_weekend = True is_holiday = False if is_weekend or is_holiday: print("Выходной")
not — инвертировать условие
logged_in = False if not logged_in: print("Пожалуйста, войдите в систему")
Скобки помогают сделать логику понятнее:
if (age >= 18) and (has_license or has_instructor): ...
Пустые значения как условия
В Python многие типы можно использовать в условии напрямую: 0, пустая строка "", пустой список [], None считаются «ложными» (False), а почти всё остальное — «истинным» (True).
name = "" if name: print(f"Привет, {name}") else: print("Имя не указано")
Это удобно, но иногда лучше писать явно, чтобы код был понятнее другим:
if name != "": ...
Типичные ошибки и как их избежать
- Забыли двоеточие после условия.
if age > 18→ ошибка. Правильно:if age > 18: - Неправильный отступ.
Блок должен быть выровнен. Смешивание табуляций и пробелов часто ломает код. - Путаница
=и==.
Присваивание в условии не сработает так, как хочется. - Несколько
ifвместоelif.
Если варианты взаимоисключающие, используйтеelif. - Слишком сложные условия в одной строке.
Лучше вынести проверку в переменную:pythonis_eligible = (age >= 18) and (score >= 70) if is_eligible: ...
Практический пример: проверка доступа к форуму
Допустим, нужно разрешить доступ, только если пользователь авторизован и не заблокирован.
is_logged_in = True is_banned = False role = "user" if not is_logged_in: print("Сначала войдите в систему") elif is_banned: print("Ваш аккаунт заблокирован") elif role == "guest": print("Гостевые аккаунты не имеют доступа") else: print("Доступ разрешён")
![]()
Порядок проверок важен: сначала проверяем отсутствие входа, потом бан, потом роль, и только если всё хорошо — разрешаем доступ.
Ещё один пример: расчёт скидки
total = 1200 is_vip = True if total >= 2000: discount = 0.2 elif total >= 1000 and is_vip: discount = 0.15 elif total >= 1000: discount = 0.1 else: discount = 0 final_price = total * (1 - discount) print(f"Итоговая цена: {final_price:.2f}")
![]()
Здесь логика идёт от «самой большой скидки» к «самой маленькой», и elif гарантирует, что применится только одна скидка.
Короткий шаблон, который можно копировать
if <условие>: <код, если условие верно> elif <другое условие>: <код, если первое неверно, а это верно> elif <ещё одно условие>: <ещё вариант> else: <код, если ни одно условие не сработало>
Количество elif может быть любым, else — необязателен.
