Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 23, 2010 01:55:50

PitPytoni
От:
Зарегистрирован: 2010-02-14
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

and , or , not

не кидайте камнями читаю книжку программируем на питон 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 раза :( объясните на пальцах пожалуйста



Офлайн

#2 Фев. 23, 2010 02:24:28

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

and , or , not

лениво они работают, преобразуют в 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
както так. Объекты вроде всегда тру



Офлайн

#3 Фев. 23, 2010 03:04:01

PitPytoni
От:
Зарегистрирован: 2010-02-14
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

and , or , not

уже понятней но не до конца зачем они , если можно на конкретном просто примере пожалуйста
и ещё инструкция not
Я просто не пойму что они сравнивают и по какому принципу строится этот ответ :( :(



Отредактировано (Фев. 23, 2010 05:43:11)

Офлайн

#4 Фев. 23, 2010 10:20:10

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

and , or , not

Логическое “И” (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)

Офлайн

#5 Фев. 23, 2010 10:40:12

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

and , or , not

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)
>>>



Офлайн

#6 Фев. 23, 2010 11:21:27

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

and , or , not

Alex2ndr
Ваш пример не имеет практической пользы
Нормальную пример имеет практическую пользу.
Например, в результате вычислений, мы получаем два числа, которые могут принимать значения >=0.
Нам нужно в третью переменную передать значение, которое не равно 0.
...
x =10
y = 0
метод 1:
if not x == 0:
z = x
z = y
Метод 2:
z = x or y
Может пример кажется с первого взгляда надуманным, подал я его в утрированной форме, но, на самом деле, такое использую почти повседневно.



Отредактировано (Фев. 23, 2010 11:21:47)

Офлайн

#7 Фев. 23, 2010 11:53:04

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

and , or , not

regall
Нормальную пример имеет практическую пользу.
Согласен. Я выразился не слишком удачно - польза есть. Просто в первую очередь or, not и and применяются в построении условий с помощью if, а то что можно использовать логические выражения в обычных выражениях - особенность синтаксиса Питона. Мне кажется что в первую очередь следует научиться их применять в построении сложных условий - а уж потом тащить в такие вот примеры. Imho все таки в if эти операторы встречаются чаще, чем таким образом, как в вашем примере.



Офлайн

#8 Фев. 23, 2010 15:42:38

lizzard
От:
Зарегистрирован: 2009-03-05
Сообщения: 48
Репутация: +  0  -
Профиль   Отправить e-mail  

and , or , not

regall
в первом методе else не хватает :)



Офлайн

#9 Фев. 23, 2010 15:48:44

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

and , or , not

def f(x=None):
if x is None:
x = []
def f(x=None):
x = x or []



Офлайн

#10 Фев. 23, 2010 19:43:40

PitPytoni
От:
Зарегистрирован: 2010-02-14
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

and , or , not

всем спасибо разобрался , а то я реально запутался :)

Ferroman
отдельно спасибо очень доходчиво и понятное разъяснение



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version