Условный оператор if / elif / else
Условный оператор if / elif / else
Все программы, которые мы писали до этого, выполнялись линейно — одна строка за другой. Но большинство реальных программ должны принимать решения: показывать разный контент в зависимости от роли пользователя, обрабатывать ошибочный ввод, вести себя по-разному в разных ситуациях. Для этого существует условный оператор if.
Синтаксис if
if условие:
# блок кода, выполняется если условие True
действие1
действие2
Условие — любое выражение, которое Python может вычислить как True или False. После двоеточия — тело блока, которое обязательно оформляется отступом (4 пробела — стандарт Python). Отступ является частью синтаксиса, а не просто эстетикой.
temperature = 35
if temperature > 30:
print("Жарко!")
print("Возьмите воды")
print("Хорошего дня") # выполняется всегда, не в блоке if
Если temperature больше 30, выводятся первые два сообщения. Последнее выводится всегда — оно вне блока if.
Отступы — часть синтаксиса
В Python отступы не декоративны — они определяют структуру программы. Строки с одинаковым отступом образуют один блок. Если нарушить отступы — получите IndentationError:
# Правильно:
if True:
print("в блоке")
print("тоже в блоке")
print("вне блока")
# Неправильно — IndentationError:
# if True:
# print("нет отступа!")
Стандарт Python — 4 пробела на каждый уровень отступа. Не используйте табуляцию вместе с пробелами — это вызывает ошибки.
Ветка else
else задаёт блок кода, который выполняется, если условие if ложно:
age = 16
if age >= 18:
print("Вход разрешён")
else:
print("Вам ещё нет 18 лет")
if и else — взаимно исключающие ветки: выполняется всегда ровно одна из них.
Несколько условий: elif
Если нужно проверить несколько условий по цепочке, используйте elif (сокращение от «else if»):
score = 75
if score >= 90:
print("Отлично")
elif score >= 75:
print("Хорошо")
elif score >= 60:
print("Удовлетворительно")
else:
print("Неудовлетворительно")
Python проверяет условия сверху вниз и выполняет первый блок, чьё условие оказалось True. Остальные блоки пропускаются. Здесь score = 75 → первое условие (>= 90) ложное → второе (>= 75) истинное → выводится "Хорошо".
Количество elif не ограничено. else в конце необязателен — если не нужен «случай по умолчанию».
Практический пример: классификатор BMI
weight = float(input("Вес (кг): "))
height = float(input("Рост (м): "))
bmi = weight / height ** 2
if bmi < 18.5:
category = "недостаточный вес"
elif bmi < 25:
category = "норма"
elif bmi < 30:
category = "избыточный вес"
else:
category = "ожирение"
print(f"ИМТ: {bmi:.1f} — {category}")
Составные условия в if
Условие в if может быть любым логическим выражением — с операторами and, or, not:
username = "admin"
password = "secret123"
if username == "admin" and password == "secret123":
print("Добро пожаловать, администратор!")
else:
print("Неверные учётные данные")
day = "суббота"
if day == "суббота" or day == "воскресенье":
print("Выходной день")
else:
print("Рабочий день")
Типичные ошибки
Забыть двоеточие:
# if x > 0 # SyntaxError: expected ':'
if x > 0:
print("положительное")
Перепутать = и ==:
x = 5
# if x = 5: # SyntaxError: нельзя использовать присваивание в условии
if x == 5:
print("пять")
Перепутать уровни отступа:
if True:
x = 1
if x > 0:
print("x положительное")
print("это в первом if, не во втором") # отступ 4, не 8
print("это вообще вне блоков")
Проверь себя
Что выведет этот код?
x = 10
if x > 5:
print("A")
if x > 8:
print("B")
if x > 15:
print("C")
Здесь три независимых if, а не цепочка elif. Проверяются все три условия по очереди. x = 10: первые два истинны → выводятся A и B; третье ложно → C не выводится.
Итог
if условие:выполняет блок, если условиеTrue.else:выполняется, если условиеifбылоFalse.elif условие:— промежуточные ветки; Python берёт первое истинное условие.- Отступы (4 пробела) обязательны и определяют структуру блоков.
- Условие может быть любым выражением, включая
and,or,not. if..if..if— три независимые проверки;if..elif..elif— цепочка, берёт первое совпадение.
В следующем уроке разберём, как вкладывать условия друг в друга для обработки сложных многоуровневых ситуаций.