Кот-наставник— До условий программа похожа на поезд: едет по одному пути от первой строки до последней.
ifдобавляет стрелки — теперь код может выбирать маршрут.— Главное не выучить три слова, а понять, как Python принимает решение. Этим и займёмся.
If else в Python нужны, когда программа должна реагировать на данные: разрешить вход по паролю, рассчитать скидку, выбрать сообщение по температуре или обработать ошибочный ввод.
В этом гайде разберём условные операторы Python с нуля: от первого if до цепочки if-elif-else, логических операторов, вложенных проверок и тернарного выражения. Все примеры можно запустить в Python 3.12 без дополнительных библиотек. Если пока путаются числа, строки и bool, сначала загляни в статью Типы данных в Python: полный гайд для начинающих.
Как работают условия if else в Python?
Условие — это выражение, результат которого Python оценивает как истину (True) или ложь (False). Если результат истинный, выполняется один блок кода. Если ложный — этот блок пропускается или выполняется альтернативная ветка.
Условная конструкция управляет потоком программы: проверяет условие и выбирает, какой код выполнить. Основные части конструкции —
if(«если»),elif(«иначе если») иelse(«иначе»).
Начнём с проверки возраста:
age = 20
if age >= 18:
print("Доступ разрешён")Доступ разрешён
Python вычисляет выражение age >= 18. При age = 20 оно превращается в True, поэтому строка с отступом выполняется. Если заменить возраст на 16, результат будет False, а программа ничего не выведет.
Анатомия записи if:
| Часть | Что означает |
|---|---|
| if | Начать проверку |
| age >= 18 | Получить True или False |
| : | Открыть блок кода |
| Четыре пробела | Показать, какие строки относятся к условию |
Операторы сравнения в условиях Python
Чаще всего после if стоит сравнение. Оно не печатает результат и не меняет переменную, а отвечает на вопрос значением типа bool.
| Оператор | Проверка | Пример | Результат |
|---|---|---|---|
| == | Равно | 5 == 5 | True |
| != | Не равно | 5 != 3 | True |
| > | Больше | 7 > 10 | False |
| < | Меньше | 7 < 10 | True |
| >= | Больше или равно | 18 >= 18 | True |
| <= | Меньше или равно | 20 <= 18 | False |
Сравнивать можно не только числа, но и строки:
password = "python123"
if password == "python123":
print("Пароль верный")Пароль верный
Оператор if: выполнить код только при True
Один if подходит, когда действие нужно выполнить только в конкретном случае, а при False ничего делать не требуется. Например, показать предупреждение о низком балансе.
balance = 250
if balance < 500:
print("Баланс заканчивается")
print("Текущий баланс:", balance)Баланс заканчивается Текущий баланс: 250
Строка с отступом находится внутри if и зависит от условия. Последний print() записан без отступа, поэтому выполнится всегда. Отступы в Python — часть синтаксиса, а не способ украсить код.
Если после if нет блока с отступом, Python остановится с ошибкой:
score = 85
if score >= 60:
print("Тест пройден")Конструкция if else в Python: два варианта
else добавляет действие на случай, когда условие в if оказалось ложным. У else нет собственного условия: эта ветка собирает все оставшиеся варианты.
Определим, чётное число или нечётное:
number = 7
if number % 2 == 0:
print("Число чётное")
else:
print("Число нечётное")Число нечётное
Как Python проходит if-else:
- Вычисляет условие после
if - При
Trueвыполняет блокifи пропускаетelse - При
Falseпропускает блокifи выполняетelse - После этого продолжает код под всей конструкцией
Выполнится ровно одна из двух веток.
elif в Python: выбор из нескольких веток
Когда вариантов больше двух, между if и else добавляют один или несколько блоков elif. Python проверяет их сверху вниз и останавливается на первом истинном условии.
Разделим результат теста на четыре категории:
score = 75
if score >= 90:
print("Отлично!")
elif score >= 70:
print("Хорошо!")
elif score >= 50:
print("Удовлетворительно")
else:
print("Нужно подтянуть знания")Хорошо!
Для score = 75 первая проверка ложна, а вторая истинна. Python печатает Хорошо! и уже не проверяет score >= 50, хотя это выражение тоже вернуло бы True.
- Несколько
ifпроверяются независимо:python points = 250 if points >= 100: print("Бронза") if points >= 200: print("Серебро")Результат:Бронза Серебро - Цепочка
if-elifвыбирает одну ветку:python points = 250 if points >= 200: print("Серебро") elif points >= 100: print("Бронза")Результат:Серебро
Логические операторы Python: and, or и not
Одного сравнения хватает не всегда. Допустим, доступ разрешён только совершеннолетнему пользователю с билетом. Такие проверки объединяют логическими операторами and, or и not.
| Оператор | Когда результат True | Пример |
|---|---|---|
| and | Истинны обе части | age >= 18 and has_ticket |
| or | Истинна хотя бы одна часть | is_admin or is_moderator |
| not | Исходное значение ложно | not is_blocked |
Проверим возраст, билет и блокировку:
age = 20
has_ticket = True
is_blocked = False
if age >= 18 and has_ticket and not is_blocked:
print("Можно пройти")
else:
print("Доступ закрыт")Можно пройти
Все три части истинны: возраст подходит, билет есть, пользователь не заблокирован. Если хотя бы одна часть с and станет ложной, весь результат будет False.
Оператор or подходит, когда достаточно одного варианта:
day = "суббота"
if day == "суббота" or day == "воскресенье":
print("Сегодня выходной")Сегодня выходной
Проверка диапазона и цепочки сравнений
Python умеет проверять диапазон так же, как это записывают в математике. Вместо двух сравнений через and можно использовать цепочку.
Работает, но многословно:
if temperature >= 18 and temperature <= 25:
print("Комфортно")Привычный Python-стиль:
if 18 <= temperature <= 25:
print("Комфортно")Оба варианта проверяют, что температура находится между 18 и 25 включительно.
Truthy и falsy: что Python считает истиной
После if не обязательно писать сравнение. Python умеет оценивать сами значения. Пустые и нулевые значения считаются ложными, большинство остальных — истинными.
| Falsy — ведут себя как False | Truthy — ведут себя как True |
|---|---|
| False | True |
| 0, 0.0 | Любое ненулевое число |
| "" | Непустая строка |
| [], {}, () | Непустая коллекция |
| None | Большинство остальных объектов |
Лишнее сравнение:
name = input("Имя: ")
if name != "":
print("Привет,", name)Короче и естественнее:
name = input("Имя: ")
if name:
print("Привет,", name)Запись if name: читается как «если имя не пустое». Для списков работает тот же принцип: if items: проверяет, есть ли элементы. Подробнее о пустых и непустых коллекциях — в гайде Списки в Python: создание, методы и срезы.
Кот-наставник— Короткая проверка не всегда умнее длинной.
if items:понятна сразу, а условие из пятиandи трёхorлучше разбить.— Цель не в минимуме символов. Цель — чтобы ты через месяц понял собственное решение без раскопок.
Вложенные условия в Python
Внутри любой ветки можно поставить ещё один if. Внутренняя проверка выполнится только после входа во внешнюю ветку. Это полезно, когда второй вопрос имеет смысл лишь после первого.
Сначала проверим возраст, затем билет:
age = 20
has_ticket = False
if age >= 18:
print("Возраст подходит")
if has_ticket:
print("Билет есть — проходи!")
else:
print("Нужен билет")
else:
print("Слишком молод")Возраст подходит Нужен билет
Тернарный оператор Python: if else в одну строку
Для простого выбора одного из двух значений есть условное, или тернарное, выражение. Его синтаксис: значение_если_True if условие else значение_если_False.
- Полная запись:
python age = 20 if age >= 18: status = "взрослый" else: status = "несовершеннолетний" - То же условие в одну строку:
python age = 20 status = "взрослый" if age >= 18 else "несовершеннолетний"
Практический пример: калькулятор скидки
Соберём сравнения, elif, логический оператор и f-строку в одной программе. Магазин даёт скидку по сумме заказа, а участнику программы добавляет ещё 5 процентных пунктов, если базовая скидка уже действует.
amount = 7500
is_member = True
if amount >= 10000:
discount = 20
elif amount >= 5000:
discount = 10
elif amount >= 1000:
discount = 5
else:
discount = 0
if is_member and discount > 0:
discount += 5
final_price = amount * (1 - discount / 100)
print(f"Скидка: {discount}%")
print(f"К оплате: {final_price:.2f} руб.")Скидка: 15% К оплате: 6375.00 руб.
Разбор программы:
- 1. Цепочка
if-elif-elseвыбирает базовую скидку по сумме - 2. Отдельный
ifнезависимо проверяет статус участника - 3. Оператор
andтребует, чтобы пользователь был участником и скидка уже была больше нуля - 4. После условий программа рассчитывает итоговую цену
- 5.
f-строкаформатирует проценты и сумму; подробнее — в статье f-строки в Python: форматирование строк просто и читаемо
Частые ошибки в if elif else
- ❌ Пропущено двоеточие. После
if условие, каждогоelifиelseобязательно ставится:. Без него возникнетSyntaxError. - ❌ Сломаны отступы. Все строки одной ветки должны иметь одинаковый отступ. Стандарт — четыре пробела на уровень. Не смешивай Tab и пробелы.
- ❌
=используется вместо==. Присваивание=не проверяет равенство. В сравнении нужен оператор==. - ❌ Условия
elifстоят в неверном порядке. Общая проверка вродеscore >= 50не должна идти раньше строгойscore >= 90, иначе строгая ветка станет недостижимой. - ❌ Неполная проверка с
or.if x == 5 or 10:не сравниваетxс десятью. Верно:if x == 5 or x == 10:либоif x in (5, 10):. - ❌ Числа из
input()сравниваются как строки.input()всегда возвращаетstr. Для числового сравнения сначала преобразуй значение:age = int(input("Возраст: ")).
Короткие ответы на вопросы про условия Python
Обязательны ли elif и else после if?
Нет. Конструкция может состоять только из if. Блоки elif и else добавляют по необходимости. При этом elif не может существовать без предыдущего if.
Сколько elif можно написать?
Жёсткого ограничения на количество elif нет: веток может быть много. Но длинная цепочка часто сигнализирует, что данные лучше хранить в словаре или разделить логику на функции.
Чем elif отличается от else if?
В Python правильное ключевое слово — elif. Записи else if в синтаксисе языка нет. elif означает «иначе, если» и проверяется только после ложного результата предыдущих веток.
Главное про условия:
ifвыполняет блок только приTrueУсловие после
ifдолжно датьTrueилиFalse. Двоеточие открывает ветку, а отступ показывает, какие команды к ней относятся.temperature = -5 if temperature < 0: print("На улице мороз")if-elif-elseвыбирает первую подходящую веткуPython проверяет условия сверху вниз и останавливается на первом
True. Блокelseне содержит условия и срабатывает, только если все предыдущие проверки были ложными.score = 75 if score >= 90: print("Отлично") elif score >= 70: print("Хорошо") else: print("Нужно повторить тему")- Отдельные
ifработают независимоВ цепочке
if-elif-elseвыполняется одна ветка. Несколько самостоятельныхifпроверяются по очереди, поэтому подходящих сообщений может быть несколько.points = 250 if points >= 100: print("Получена бронза") if points >= 200: print("Получено серебро") and,orиnotобъединяют проверкиandтребует выполнения всех условий,or— хотя бы одного, аnotменяет логическое значение на противоположное.age = 20 has_ticket = True is_blocked = False if age >= 18 and has_ticket and not is_blocked: print("Можно пройти")- Короткая запись должна оставаться читаемой
Тернарное выражение удобно для простого выбора одного значения. Если внутри нужны несколько действий или дополнительные проверки, используй обычный
if-else.age = 20 status = "взрослый" if age >= 18 else "несовершеннолетний" print(status)
Кот-наставник— Теперь код умеет выбирать. Но настоящее понимание приходит, когда меняешь входные данные и заранее угадываешь, какая ветка сработает.
— Возьми калькулятор скидки, проверь суммы
500,5000и10000, а потом добавь своё правило. Так условие перестаёт быть схемой из статьи и становится твоим инструментом.
Научи код выбирать — и сразу проверь каждую ветку!
На SkillPy ты пишешь условия сам: проверяешь ввод, строишь системы доступа и находишь ошибки в ветках. AI-наставник разбирает ход решения и объясняет, почему сработал именно этот блок.
