v1.0.0

Python с нуля для ЕГЭ · Несколько ветвей и составные условия

Урок курсаPython 35 задачБесплатно

Несколько ветвей и составные условия

Научимся выбирать одну из нескольких ветвей и собирать проверки с помощью elif, and, or и not.

Теория

Как выбирается одна ветвь

Цепочка из нескольких ветвей нужна, когда у программы больше двух возможных действий. 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 меняет логический результат на противоположный.

Полезно сначала вычислить каждую простую проверку отдельно и только потом соединить результаты. Так легче заметить, какая часть отвечает за итог.

Разберём на примере
Разберём допуск к занятию
Ученик допускается, если ему не меньше 14 лет и у него есть билет.
  1. При возрасте 15 лет сравнение с границей 14 даёт True.
  2. Наличие билета также даёт True.
  3. True and True даёт True, поэтому выполняется ветвь допуска.
Проверьте себя
Почему ветка elif может не выполниться, хотя её условие истинно?
Потому что расположенная выше ветвь уже могла получить True. После выбора первой подходящей ветви Python пропускает остаток цепочки.

Почему порядок меняет результат

Если широкое условие стоит раньше узкого, оно перехватывает значение. Например, проверка температуры не ниже нуля сработает и для двадцати градусов, поэтому более точная ветвь про тепло ниже неё уже не будет достигнута.

Как проверить цепочку

Для проверки выпишите по одному значению из каждой ветви и отдельные значения на границах. Затем пройдите условия именно в том порядке, в котором их увидит Python.

Как действовать
Проверяем без догадки
  1. Отметьте все ветви. Для каждой ветви назовите условие и ожидаемое действие.
  2. Выберите граничные значения. Проверьте число перед границей, саму границу и число после неё.
  3. Вычисляйте сверху вниз. Остановитесь на первой истинной проверке.
  4. Запустите примеры. Сравните фактическую ветвь с ожидаемой для каждого значения.

Практика

Проследите порядок ветвей

x = 7. Программа проверяет x < 0, затем x == 0, иначе печатает «положительное». Что будет напечатано?

Подсказка
Проверки выполняются сверху вниз; при x = 7 первые два условия ложны.
Решение

Обе проверки дают False, поэтому управление доходит до `else` и выводится «положительное».

Проверьте составное условие

При age = 15 и has_ticket = True условие записано как age >= 14 and has_ticket. Программа печатает «вход», если условие истинно. Что она напечатает?

Подсказка
`and` требует истинности обеих частей.
Решение

15 >= 14 даёт True, и `has_ticket` уже равен True. Обе части истинны, поэтому выполняется ветвь «вход».

При temperature = 0 программа проверяет temperature < 0, затем temperature <= 10, иначе печатает «тепло». Что будет напечатано?

Подсказка
Ноль не меньше нуля, но входит в диапазон до 10 включительно.
Решение

Первая ветвь пропускается. Сравнение 0 <= 10 истинно, поэтому выбирается вторая ветвь — «прохладно».

Исправьте неполное сравнение

Как записать условие «x больше 0 и меньше 10» без сокращения if x > 0 and < 10?

Подсказка
Каждая сторона `and` должна быть законченным логическим выражением.
Решение

Python не переносит имя `x` через `and`. Корректная запись — `x > 0 and x < 10`; цепочка `0 < x < 10` означает то же самое.

Проверьте программу локально

Запустите: score = 8, bonus = 3; если score >= 10 or bonus >= 3, вывести «допуск», иначе «нет». Какое слово появится?

Подсказка
`or` достаточно одной истинной части.
Решение

Первая часть ложна, но 3 >= 3 истинно. Для `or` этого достаточно, поэтому программа выводит «допуск».

Итог

Теперь вы умеете строить выбор из нескольких вариантов и объяснять, почему выполнилась конкретная ветвь.

Возьмите шкалу из трёх диапазонов, выпишите значения на каждой границе и подтвердите локальным запуском, что ни одно значение не потерялось.

Прогресс

0 / 5
x

Вы ещё не решали задания