Другие языки программирования и технологии

Логические операторы в Python 3 - объясните на пальцах?

Никак не могу понять, как это работает. Допустим:x = 5y = 2z = 0print(x and y) # возвращает 2print(y and x) # возвращает 5print(x and z) # возвращает 0что именно печатается? внешне выглядит, как вторая из переменных. почему не обе? почему не сумма?Также интересна работа операторов OR и NOT.
Питон 3? Вы типо из будущего прилетели?
С типом bool работает так:

not True == False
False and True == False
True and True == True
False and False == False

True or False == True
True or True == True
False or False == False

Верно: a and b == b and a
a or b == b or a

Для типа int 0 == False, non-zero int == True,
and и or выдают операнд, при котором в данном случае известно, что в результате выдет
2 and 3 == 3 (известно, что с 2 и 3 - True)
0 and 3 == 0 (заведомо известно, что с 0 - False)

4 or 5 == 4
0 or 5 == 5 (с нулем может быть True и False, с 5 - точно True)

Надеюсь, помог
P.S. Ух ты, а ведь и правда. Какой-то python 3.1 есть. Отстал от жизни.
А чем я объяснил не на пальцах? Читайте догда статью в википедии про ленивые вычисления
Shamil X
Shamil X
10 628
Лучший ответ
Очень просто. Python я абсолютно не знаю, но это не имеет значения, все эти языки (C, Pascal; Basic; Python и так далее) очень похожи.
При логических операциях с целыми числа рассматриваются как массивы битов, и операции проводятся как с двумя массивами битов поразрядно.
Например, 5 это 110 в двоичной системе, а 2 это 10
110 and 010 при поразрядном применении операции and (она выдает 1 только если оба операнда равны 1, то есть "и то, и то") даст 010, в десятичном представлении 2
Еще раз : операции применяются к представлению чисел в машине, рассматриваемому как массивы битов, поразрядно, и результат - массив битов - рассматривается как новое число.
Все эти операции над целыми были сделаны для возможности программирования на уровне битов, рассматривая числа как массивы битов.
Все просто, что 0 - ложно, остальное истина. Читаем слева направо.

1) Видим "x and y".. x = 5, значит истина, идем дальше. . y = 2, истина, конец. . Ммм. . Что было последним? 2? Ну 2 и печатаем.
2) "y and x", y = 2 - истина, идем дальше. . запоминается только последнее значение. . x - последнее.
3) Аналогично.

А вот если бы было "z and x", тогда было бы 0.. Потому что "and" прекращает работу когда значение ложное.