IF语句忽略或不接受逻辑运算符'或者

时间:2016-11-03 00:00:26

标签: python if-statement

# asks the question and gives the choices   
choice=input('what is your favourite colour? press 1 for red, 2 for blue, 3 for yellow or 4 to quit') 
# if the responder responds with choice 1 or 2,3,4 it will print this
if choice=='1' or 'one':
    print('red means anger') 

elif choice=='2'or 'two':
    print('blue represents calmness')
elif choice=='3' or 'three':
    print('yellow represents happiness')
elif choice=='4' or 'four':
    print('it was nice meeting you. goodbye.')
else:
    print('sorry incorrect answer please try again.')
  

我的一个学生写了这篇文章,我似乎无法让它发挥作用。   救命!它不断重复红色意味着愤怒。如果我注释掉'或',   它有效,但为什么她不能使用'或'?我希望她只添加一个循环   如果这是第一次。

2 个答案:

答案 0 :(得分:3)

or未正确使用。你需要写

choice == '1' or choice == 'one'

否则类型强制将评估一个'为true且第一个if语句的or条件始终为true重言式),其他情况永远不会被检查。

答案 1 :(得分:0)

当你有像

这样的陈述时
if choice=='1' or 'one':

它将被视为

if (choice=='1') or 'one': 

'one'总是评估为True,因此if条件总是满足,你需要的是如下,括号使事情更清楚

if (choice=='1') or (choice=='one'): 

或者,当你有多个OR语句要检查一个值时,可以考虑将所有的检查值放在一个列表中并在下面使用,这样看起来更清晰,当检查值增加时

if choice in ['1', 'one', '2', 'two', '3', 'three']: