Множественные логические операторы [дубликаты]

На этот вопрос уже есть ответ:

Может кто-нибудь объяснить мне, почему этот код возвращает True? Я полностью не понимаю это, для моего понимания, это должно вернуть Ложь.

z = 2
y = 1
x = y < z or z > y and y > z or z < y
print(x)
-1
задан petezurich 26 June 2019 в 20:34
поделиться

2 ответа

and связывает, больше (на основе оператор precendence ), чем or делает. Следовательно, Ваше булево выражение могло также быть представлено как это:

z = 2
y = 1
x = y < z or (z > y and y > z) or z < y
print(x)

Очевидно, y < z True и потому что только одна из трех потребностей быть True, целое выражение оценивает к True.

0
ответ дан creativecreatorormaybenot 26 June 2019 в 20:34
поделиться

or имеет более низкое приоритет оператора , чем and, таким образом y < z or z > y and y > z or z < y эквивалентно (y < z) or (z > y and y > z) or (z < y), и так как y < z True, все выражение поэтому True после оценки эти or операции.

0
ответ дан blhsing 26 June 2019 в 20:34
поделиться
Другие вопросы по тегам:

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