Разветвление в Python: if, elif, else и match-case
Разветвляющиеся алгоритмы в Python: условные операторы
Разветвляющиеся алгоритмы позволяют программе выбирать разные пути выполнения в зависимости от условий. В Python основным инструментом для этого служат условные операторы if, elif и else. Ниже представлено основное решение, а затем различные варианты его реализации.
Наиболее распространённый способ - конструкция if-elif-else. Она проверяет условия последовательно и выполняет первый блок, где условие истинно. Если ни одно условие не выполняется, выполняется блок else (при его наличии).
x = int(input('Введите число: '))
if x > 0:
print('Число положительное')
elif x < 0:
print('Число отрицательное')
else:
print('Число равно нулю')значение else python (значение else в python)
Пояснение: функция input() получает строку, int() преобразует её в целое число. Затем проверяется три случая. Если x > 0 - выводится соответствующее сообщение, иначе проверяется x < 0, и только если оба условия ложны - выполняется else.
Типичные ошибки:
- Забыто двоеточие после условия (if x > 0:).
- Неправильное выравнивание отступов (в Python отступы имеют значение).
- Использование else if вместо elif.
Как реализовать множественное ветвление с вложенными условиями?
Вложенные условия - это if внутри другого if. Такой подход применяется, когда одна проверка должна выполняться только после успешной другой.
age = 20
has_license = True
if age >= 18:
if has_license:
print('Можно водить автомобиль')
else:
print('Нужно получить права')
else:
print('Возраст недостаточен')Python число больше и меньше (сравнение чисел (больше/меньше) в python)
Пример проверяет возраст, а затем наличие прав. Проблема вложенных конструкций - снижение читаемости при глубине более двух-трёх уровней.
Частая ошибка:
Путаница с отступами: внутренний if должен быть смещён относительно внешнего.
Как сократить запись простого условия в одну строку?
Тернарный оператор позволяет записать простую развилку в одну строку: A if условие else B.
x = 10
y = 'чётное' if x % 2 == 0 else 'нечётное'
print(y)Python if несколько условий (проверка нескольких условий с помощью if в python)
Такой вариант удобен для присваивания переменной одного из двух значений. Однако его не следует использовать при сложных логических комбинациях - читаемость страдает.
Ошибка:
Попытка поместить в тернарный оператор сложный код с побочными эффектами - это ухудшает понимание программы.
Как элегантно реализовать выбор из множества значений начиная с Python 3.10?
Оператор match-case (сопоставление с образцом) позволяет проверить значение на совпадение с одним из нескольких шаблонов.
day = 3
match day:
case 1:
print('Понедельник')
case 2:
print('Вторник')
case 3:
print('Среда')
case _:
print('Неизвестный день')Вариант подходит для обработки множества конкретных значений. Символ _ означает «любое другое значение» (аналог default).
Проблема:
Синтаксис match-case поддерживается только в Python 3.10 и новее. На более старых версиях код вызовет ошибку SyntaxError.
Расширенные примеры разветвляющихся алгоритмов
Проверка чётности числа
n = 7
if n % 2 == 0:
print('Чётное')
else:
print('Нечётное')Нечётное
Условие использует оператор остатка от деления. Если остаток равен нулю - число чётное.
Оценка по баллам (elif)
score = 85
if score >= 90:
grade = 'Отлично'
elif score >= 75:
grade = 'Хорошо'
elif score >= 60:
grade = 'Удовлетворительно'
else:
grade = 'Неудовлетворительно'
print(f'Оценка: {grade}')Оценка: Хорошо
Важно располагать условия от большего к меньшему, иначе логика нарушится.
Вложенные условия: проверка возраста и прав
age = 17
has_permission = False
if age >= 18:
if has_permission:
print('Доступ разрешён')
else:
print('Нет разрешения')
else:
print('Возраст меньше 18')Возраст меньше 18
Внешний if фильтрует возраст, внутренний - дополнительные условия.
Тернарный оператор: максимум из двух чисел
a, b = 15, 20
max_val = a if a > b else b
print(max_val)20
Такой же результат можно получить с помощью встроенной функции max().
Match-case: тип данных
value = [1, 2, 3]
match value:
case int():
print('Целое число')
case str():
print('Строка')
case list():
print('Список')
case _:
print('Другой тип')Список
Сопоставление с образцом работает не только с конкретными значениями, но и с типами.
Логические операторы: проверка високосного года
year = 2024
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print('Високосный')
else:
print('Не високосный')Високосный
Комбинированное условие с and и or. Круглые скобки помогают задать приоритет.
Короткое замыкание в условиях
user = None
if user and user.is_admin:
print('Администратор')
else:
print('Не администратор')Не администратор
Если user равен None (ложь), вторая часть условия не вычисляется, что предотвращает ошибку AttributeError.