Форум сайта python.su
не кидайте камнями читаю книжку программируем на питон 3 но не могу понять прицеп работы этих операторов and or not
five = 5
two = 2
zero = 0
print(five and two)
print(two and five)
print(zero and five)
print(five or two)
print(two or five)
print(zero or five)
nought = 0
print(zero or nought)
Офлайн
лениво они работают, преобразуют в bool проверяют == True и возврящают обьект
print(five and two) # bool(5) == True, bool(2) == True, return 2
print(two and five) # bool(2) == True, bool(5) == True, return 5
print(zero and five) # bool(0) == False, return 0
print(five or two) # bool(5) == True, return 5
print(two or five) # bool(2) == True, return 2
print(zero or five) # bool(0) == False, bool(5) == True, return 5
print(zero or nought) # bool(0) == False, bool(0) == False, return 0
Офлайн
уже понятней но не до конца зачем они , если можно на конкретном просто примере пожалуйста
и ещё инструкция not
Я просто не пойму что они сравнивают и по какому принципу строится этот ответ :( :(
Отредактировано (Фев. 23, 2010 05:43:11)
Офлайн
Логическое “И” (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
>>>
Отредактировано (Фев. 23, 2010 10:23:06)
Офлайн
PitPytoni
Ваш пример не имеет практической пользы. Поэтому и понять его сложно - вот вам то что чаще встречается
>>> a=3
>>> if (a>1 and a<10): print "a in (1,10)"
...
a in (1,10)
>>> a=0
>>> if (a<1 or a>10): print "a not in (1,10)"
...
a not in (1,10)
>>>
Офлайн
Alex2ndrНормальную пример имеет практическую пользу.
Ваш пример не имеет практической пользы
...
x =10
y = 0
if not x == 0:
z = x
z = y
z = x or y
Отредактировано (Фев. 23, 2010 11:21:47)
Офлайн
regallСогласен. Я выразился не слишком удачно - польза есть. Просто в первую очередь or, not и and применяются в построении условий с помощью if, а то что можно использовать логические выражения в обычных выражениях - особенность синтаксиса Питона. Мне кажется что в первую очередь следует научиться их применять в построении сложных условий - а уж потом тащить в такие вот примеры. Imho все таки в if эти операторы встречаются чаще, чем таким образом, как в вашем примере.
Нормальную пример имеет практическую пользу.
Офлайн
regall
в первом методе else не хватает :)
Офлайн
def f(x=None):
if x is None:
x = []
def f(x=None):
x = x or []
Офлайн
всем спасибо разобрался , а то я реально запутался :)
Ferroman
отдельно спасибо очень доходчиво и понятное разъяснение
Офлайн