2017-06-12 57 views
1

只是学习如何编写代码,并想制作一个小程序来查看我所知道的内容。如果声明没有读取输入

n = int(input("Pick a number any Number: ")) 
if n > 100: 
    print ("No... Not that Number") 
else: 
    answer = input("Would you like to know your number?") 
    if answer == "Y" or "Yes" or "y" or "yes": 
     print ("Your number is %s" % (n)) 
    elif answer == "N" or "No" or "n" or "no" or "NO": 
     print ("Oh, well that's a shame then.") 
    else: 
     print ("Please type Yes or No") 

input("Press Enter/Return to Exit") 

一切正常,除了第二if语句,它不遵循任何进入input数据。为什么会这样做?

+1

纠正压痕第一 –

+0

是整个代码或者这是一个while循环的身体? – Rosh

回答

0

==具有比or更高的优先级。因此,在if条件中,您将检查answer == 'Y'然后or这个布尔表达式与"Yes"(它是非None字符串),因此它评估为True。相反,你应该使用in操作,以检查是否answer是你感兴趣的值之一:

if answer in ("Y", "Yes", "y", "yes"): 
    print ("Your number is %s" % (n)) 
elif answer in ("N", "No", "n", "no", "NO"): 
    print ("Oh, well that's a shame then.") 
else: 
    print ("Please type Yes or No") 
+0

即使优先权被改变,它也不起作用; '或'根本不遵循英语语法规则。 –

1

Python是不是人,它不理解

if answer == "Y" or "Yes" 

方式你的意思是。你应该做

if answer == 'Y' or answer == 'Yes' 

甚至更​​好

if answer in ('Yes', 'Y', 'yes', 'y') 

甚至更​​短的

if answer.lower() in ('yes', 'y')