Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 12, 2009 19:41:57

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

Логический оператор "or"

Здравствуйте!


Есть два способа написать “считалку”, но один почему-то не работает:
Первый (нормальный):

z=input("Input any integer: ")
if z==0 or z==1:
print "Good guess!"
else:
print "You missed!"
Второй (очень оптимистичный, поскольку всегда “Good guess!”)
z=input("Input any integer: ")
if z==0 or 1:
print "Good guess!"
else:
print "You missed!"
Вопрос такой: а почему так? почему второй вариант даже не сравнивает вводимое с 0 и 1?



Офлайн

#2 Июнь 12, 2009 19:45:20

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Логический оператор "or"

FILLIPO
Вопрос такой: а почему так? почему второй вариант даже не сравнивает вводимое с 0 и 1?
Потому что такие правила языка.

Hint: расставьте скобки в этом выражении:-)



Офлайн

#3 Июнь 12, 2009 19:58:43

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

Логический оператор "or"

ААА! Совсем плохо:

теперь, если со скобками, совсем анархия:

z=input("Input any integer: ")
if z == (1 or 0):
print "Good guess!"
else:
print "You missed!"
raw_input()
Принципиально: 1-Good guess!, 0 и все остальное-You missed!

Или скобки не там?



Офлайн

#4 Июнь 12, 2009 20:02:34

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Логический оператор "or"

FILLIPO
Или скобки не там?
Не там. Расставьте их по приоритету операторов.



Офлайн

#5 Июнь 12, 2009 20:43:01

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

Логический оператор "or"

Эх, простите, но что-то сегодня откровенно ничего не понимаю. Неукротимый оператор “or”.

Если:

z=input("Input any integer: ")
if z == 0 or 1:
print "Good guess!"
else:
print "You missed!"
raw_input()
в этом примере все “Good guessed”
а если:
z=input("Input any integer: ")
if z == 1 or 0:
print "Good guess!"
else:
print "You missed!"
raw_input()
то “Good guessed” только при 1

покажите, пожалуйста, где скобки ставить! Ведь операторов то здесь всего три: if, or и else. Где же еще поставить, если не (1 or 0)?



Офлайн

#6 Июнь 12, 2009 20:47:33

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Логический оператор "or"

питон выполняет всё правильно …

z=input("Input any integer: ")
if z == (1 or 0):
print "Good guess!"
elif:
print "You missed!"
else:
print "exit"
exit()
raw_input()
наверное так

Офлайн

#7 Июнь 12, 2009 21:00:17

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

Логический оператор "or"

Большое спасибо. :)
но, постойте, код методом copy-paste в блокнот и программа захлопывается=ошибка. Что-то опять не так.

Не понятно, зачем

else:
print "exit"
exit()
это же никак не влияет на суть: не получается правильно описать два возможных значения. А остальная часть кода
z=input("Input any integer: ")
if z == (1 or 0):
print "Good guess!"
else:
print "You missed!"
уже была. Не работает(

Так, все-таки, вопрос к тем, кто понял Daevaorn-a, где нужно поставить скобки?



Отредактировано (Июнь 12, 2009 21:11:44)

Офлайн

#8 Июнь 12, 2009 21:17:11

Cleric
От:
Зарегистрирован: 2007-06-26
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

Логический оператор "or"

Может лучше всё таки так?

z=input("Input any integer: ")
if z in (1, 0):
print "Good guess!"
else:
print "You missed!"



Отредактировано (Июнь 12, 2009 21:19:49)

Офлайн

#9 Июнь 12, 2009 21:20:12

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Логический оператор "or"

Ну, чудаки-человеки.

>>> 1 or 0
1
Т.е. z == (1 or 0) ВСЕГДА эквивалетно z == 1
Кстати, можно написать z in (0, 1) если уж сильно хочется.



Офлайн

#10 Июнь 13, 2009 15:28:19

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

Логический оператор "or"

Всем большое спасибо!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version