Логическое “И” (and) возвращает True только, если оба операнда равны True (True and True = True, True and False = False, False and True = False, False and False = False)
Логическое “ИЛИ” (or) возвращает True если хотя бы один операнд равен True (True or True = True, True or False = True, False or True = False, False and False = False)
Логическое “НЕ” (not) возвращает логическое значение противоположное операндному (not False = True, not True = False)
В питоне переменные со значениями не равными False, 0 или None считаются такими, что эквивалентны значению True
То есть print(zero and five) равна print(False and True) и возвращает False, print выводит последнее значащее абсолютное, а не логическое значение, в данном случае - 0.
>>> print (0 and 5)
0
>>> print (5 and 0)
0
>>> print (5 or 0)
5
>>> print (5 or 0 and 6)
5
>>> print (5 or 0 or 6)
5
>>> print (5 or 0)
5
>>> print ((5 or 0) or 6)
5
>>> print ((5 or 0) and 6)
6
>>>