Как работает оператор if else в Python: примеры и разбор
Основы условного оператора if else в Python
Конструкция if-elif-else позволяет выполнять разные блоки кода в зависимости от логических условий. Это основа ветвления в программах на Python. Ниже приведено базовое решение, а затем рассмотрены различные варианты применения.
Базовая конструкция
Синтаксис:
if условие:
блок_кода
elif другое_условие:
блок_кода
else:
блок_кодапрограмма if else python (программа с условным оператором if else в python)
Пример проверки числа:
x = 10
if x > 0:
print("Число положительное")
elif x == 0:
print("Число равно нулю")
else:
print("Число отрицательное")
Результат: Число положительное
Типичные ошибки:
- Забыто двоеточие (:) после условия.
- Неверные отступы (блоки кода должны быть сдвинуты на 4 пробела или табуляцию).
- Путаница оператора присваивания (=) и сравнения (==).
Как реализовать проверку нескольких условий с помощью if-elif-else?
Пример с оценками студента:
score = 85
if score >= 90:
grade = "A"
elif score >= 75:
grade = "B"
elif score >= 60:
grade = "C"
else:
grade = "D"
print(f"Оценка: {grade}")
Проблема: порядок условий имеет значение. Если написать if score >= 60 раньше, чем score >= 75, то оценка B никогда не будет получена.
Как использовать тернарный оператор (условное выражение) для короткой проверки?
Тернарный оператор позволяет записать if-else в одну строку:
x = 7
result = "Четное" if x % 2 == 0 else "Нечетное"
print(result) # Нечетное
Ошибка: тернарный оператор не поддерживает elif, поэтому при множестве условий лучше использовать обычный if-elif-else.
Как вложить условные операторы друг в друга?
Пример проверки возраста и наличия прав:
age = 20
has_license = True
if age >= 18:
if has_license:
print("Можно водить машину")
else:
print("Нужно получить права")
else:
print("Возраст не позволяет водить")
Проблема: глубокое вложение ухудшает читаемость. Рекомендуется использовать логические операторы (and, or) для объединения условий.
Как применить логические операторы and, or, not в условиях if?
Проверка ввода пользователя:
user_input = input("Введите число: ")
if user_input.isdigit() and int(user_input) > 0:
print("Это положительное целое число")
elif not user_input.isdigit():
print("Ввод не является числом")
else:
print("Число не положительное")
Как обрабатывать исключения совместно с if?
Хотя try-except не заменяет if, можно использовать if для предварительной проверки:
x = "abc"
if x.isdigit():
number = int(x)
else:
print("Невозможно преобразовать в число")
Ошибка: при проверке типов не всегда можно полагаться на методы вроде isdigit(), лучше использовать блок try-except для надежности.
Расширенные примеры использования if else в Python
Ниже приведены подробные примеры с кодом и результатами выполнения.
Пример 1: Калькулятор с выбором операции
a = 10
b = 5
op = "/"
if op == "+":
result = a + b
elif op == "-":
result = a - b
elif op == "*":
result = a * b
elif op == "/":
if b != 0:
result = a / b
else:
result = "Ошибка: деление на ноль"
else:
result = "Неизвестная операция"
print(f"Результат: {result}")
Результат: 2.0
Пример 2: Определение високосного года
year = 2024
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(f"{year} - високосный год")
else:
print(f"{year} - не високосный год")
2024 - високосный год
Пример 3: Проверка логина и пароля
login = "user123"
password = "secret"
if login == "user123" and password == "secret":
print("Доступ разрешен")
elif login != "user123":
print("Неверный логин")
else:
print("Неверный пароль")
Доступ разрешен
Пример 4: Определение времени суток по часу
hour = 14
if 6 <= hour < 12:
print("Утро")
elif 12 <= hour < 18:
print("День")
elif 18 <= hour < 24:
print("Вечер")
else:
print("Ночь")
День
Пример 5: Тернарный оператор в списковом включении (list comprehension)
numbers = [1, 2, 3, 4, 5]
result = ["Четное" if n % 2 == 0 else "Нечетное" for n in numbers]
print(result)
['Нечетное', 'Четное', 'Нечетное', 'Четное', 'Нечетное']
Пример 6: Использование match-case (альтернатива if-elif в Python 3.10+)
value = 2
match value:
case 1:
print("Единица")
case 2:
print("Двойка")
case _:
print("Другое значение")
Двойка
В каждом примере показана типичная конструкция if-else. Важно: при использовании match-case следует помнить, что это отдельная конструкция, не заменяющая if, но упрощающая сопоставление с образцом.