Разветвление в 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.

разветвляющиеся алгоритмы в Python - comments

En
программирование разветвляющихся алгоритмов python (python)