← Все вопросы

Объясните разницу между операторами and, or и not на примерах из реальной жизни.

Задан 2 месяца назад20 просмотров1 ответ
0

Напишите условие для проверки, что число находится в диапазоне от 10 до 20 включительно. Затем напишите условие, что число НЕ равно нулю. Как работают короткие замыкания (short-circuit evaluation) в Python?

1 ответ

1

По-бытовому: and — «оба условия выполнены», or — «хотя бы одно», not — переворот. Из жизни: беру зонт, если (идёт дождь and иду пешком) or прогноз обещает ливень.

Теперь ваши задачи:

if 10 <= x <= 20:      # диапазон: в Python сравнения сцепляются в цепочку
    ...
if x != 0:             # «не равно нулю»; короткий вариант: if x:
    ...

Цепочка 10 <= x <= 20 — приятная особенность Python. В большинстве языков пришлось бы писать x >= 10 and x <= 20.

Короткое замыкание: условия вычисляются слева направо, и вычисление останавливается, как только результат ясен. В a and b при ложном a до b дело не дойдёт; в a or b при истинном a — тоже. Это не только оптимизация, на этом строят защитные проверки:

if items and items[0] > 100:   # пустой список — сразу False,
    ...                        # items[0] не выполнится, IndexError не будет

name = entered or 'Гость'      # or возвращает первый «истинный» операнд

Обратите внимание на последнюю строку: and и or возвращают не True/False, а один из операндов — поэтому трюк с умолчанием и работает.

Ваш ответ

, чтобы ответить на вопрос.