Найти - Пользователи
Полная версия: and , or , not
Начало » Python для новичков » and , or , not
1 2
PitPytoni
не кидайте камнями читаю книжку программируем на питон 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)
ответ
2
5
0
5
2
5
0

как они работают перечитал уже 2 раза :( объясните на пальцах пожалуйста
bazooka
лениво они работают, преобразуют в 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
както так. Объекты вроде всегда тру
PitPytoni
уже понятней но не до конца зачем они , если можно на конкретном просто примере пожалуйста
и ещё инструкция not
Я просто не пойму что они сравнивают и по какому принципу строится этот ответ :( :(
Ferroman
Логическое “И” (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
>>>
Alex2ndr
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)
>>>
regall
Alex2ndr
Ваш пример не имеет практической пользы
Нормальную пример имеет практическую пользу.
Например, в результате вычислений, мы получаем два числа, которые могут принимать значения >=0.
Нам нужно в третью переменную передать значение, которое не равно 0.
...
x =10
y = 0
метод 1:
if not x == 0:
z = x
z = y
Метод 2:
z = x or y
Может пример кажется с первого взгляда надуманным, подал я его в утрированной форме, но, на самом деле, такое использую почти повседневно.
Alex2ndr
regall
Нормальную пример имеет практическую пользу.
Согласен. Я выразился не слишком удачно - польза есть. Просто в первую очередь or, not и and применяются в построении условий с помощью if, а то что можно использовать логические выражения в обычных выражениях - особенность синтаксиса Питона. Мне кажется что в первую очередь следует научиться их применять в построении сложных условий - а уж потом тащить в такие вот примеры. Imho все таки в if эти операторы встречаются чаще, чем таким образом, как в вашем примере.
lizzard
regall
в первом методе else не хватает :)
bazooka
def f(x=None):
if x is None:
x = []
def f(x=None):
x = x or []
PitPytoni
всем спасибо разобрался , а то я реально запутался :)

Ferroman
отдельно спасибо очень доходчиво и понятное разъяснение
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB