Задать вопрос
OccamaRazor
@OccamaRazor

Почему эти два участка кода не эквивалентны друг другу?

Как создать более компактную версию первого?
1) if 0 > x or x > 20 or y < 0 or y > 20:
2) if 0 > x > 20 or  0 > y > 20:
  • Вопрос задан
  • 241 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Потому что в питоне действуют ленивые вычисления. В первом случае если 0>x истинно - то x>20 уже не будет иметь значения.
Во втором случае условие будет срабатывать только при полном соответствии 0 > x > 20
Ответ написан
Комментировать
15432
@15432
Системный программист ^_^
Как пишут выше, второе выражение эквивалентно
if (0 > x and x > 20) or (y < 0 and y > 20):

могу предложить такой вариант
if (not (0 <= x <= 20) or not (0 <= y <= 20)):
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
потому что нет такого числа которое было бы меньше нуля и одновременно больше 20. Таким образом выражение "0 > x > 20" будет всегда False.
А в случае использования "0 > x or x > 20" вернёт True, когда "x" будет меньше 0 ИЛИ больше 20.

Тоже самое и про выражение с "y"
Ответ написан
Комментировать
@fdrwitch
1. Ох уж эти егэ-шные задачи....
2. Если вы привязались к числовой оси, то это не только точки с их значениями на этой оси,
но и много много всяких подпоследовательностей (хоть отрезков) и
проверка на вхождение точки (принадлежность точки) ин или нот ин -- самое то!! (для питона это
мембершип тест оперейшнз)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы