Теория
Как выбирается одна ветвь
Цепочка из нескольких ветвей нужна, когда у программы больше двух возможных действий. Python проверяет условия сверху вниз и выполняет только тело первой подходящей ветви. Остальные условия после выбора уже не проверяются.
Порядок поэтому является частью алгоритма. Сначала ставят более узкие или приоритетные случаи, затем общие, а завершающий else оставляют для всех значений, которые не подошли раньше.
score = 73if score >= 90: grade = "5"elif score >= 70: grade = "4"elif score >= 50: grade = "3"else: grade = "2"Как работают and, or и not
Составное условие соединяет законченные проверки. Оператор and требует истинности обеих частей, оператор or — хотя бы одной. Оператор not меняет логический результат на противоположный.
Полезно сначала вычислить каждую простую проверку отдельно и только потом соединить результаты. Так легче заметить, какая часть отвечает за итог.
- При возрасте 15 лет сравнение с границей 14 даёт True.
- Наличие билета также даёт True.
- True and True даёт True, поэтому выполняется ветвь допуска.
Почему порядок меняет результат
Если широкое условие стоит раньше узкого, оно перехватывает значение. Например, проверка температуры не ниже нуля сработает и для двадцати градусов, поэтому более точная ветвь про тепло ниже неё уже не будет достигнута.
Как проверить цепочку
Для проверки выпишите по одному значению из каждой ветви и отдельные значения на границах. Затем пройдите условия именно в том порядке, в котором их увидит Python.
- Отметьте все ветви. Для каждой ветви назовите условие и ожидаемое действие.
- Выберите граничные значения. Проверьте число перед границей, саму границу и число после неё.
- Вычисляйте сверху вниз. Остановитесь на первой истинной проверке.
- Запустите примеры. Сравните фактическую ветвь с ожидаемой для каждого значения.
Практика
Проследите порядок ветвей
Обе проверки дают False, поэтому управление доходит до `else` и выводится «положительное».
Проверьте составное условие
15 >= 14 даёт True, и `has_ticket` уже равен True. Обе части истинны, поэтому выполняется ветвь «вход».
Не потеряйте ноль
Первая ветвь пропускается. Сравнение 0 <= 10 истинно, поэтому выбирается вторая ветвь — «прохладно».
Исправьте неполное сравнение
Python не переносит имя `x` через `and`. Корректная запись — `x > 0 and x < 10`; цепочка `0 < x < 10` означает то же самое.
Проверьте программу локально
Первая часть ложна, но 3 >= 3 истинно. Для `or` этого достаточно, поэтому программа выводит «допуск».
Итог
Теперь вы умеете строить выбор из нескольких вариантов и объяснять, почему выполнилась конкретная ветвь.
Возьмите шкалу из трёх диапазонов, выпишите значения на каждой границе и подтвердите локальным запуском, что ни одно значение не потерялось.
Прогресс
0 / 5Вы ещё не решали задания