2016-06-23 33 views
-3

我如何克服python中的条件问题?问题在于它应该根据某些条件显示某些文本,但是如果输入为否,则无论如何都表示是有条件的。Python的原始代码

def main(y_b,c_y): 
    ans=input('R u Phil?') 
    if ans=='Yes' or 'yes': 
      years=y_b-c_y 
      print('U r',abs(years),'jahre alt') 
    elif ans=='No' or 'no': 
      print("How old r u?") 
    else: 
      print('Sorry') 

main(2012,2016) 
+0

也请阅读格式下次帮助,SO使用减价不是原始HTML – jonrsharpe

+0

'ans =='是'或'yes''是错误的,你知道为什么。但我认为,最好将输入转换为小写,并与“是”进行比较。 – qvpham

回答

3

or是包容。所以yes测试将始终通过,因为当ans != 'Yes'其他条件yes具有truthy值。

>>> bool('yes') 
True 

而是应该将测试用:

if ans in ('Yes', 'yeah', 'yes'): 
    # code 
elif ans in ('No', 'Nah', 'no'): 
    # code 
else: 
    # more code 
+0

在这种情况下,他应该使用'in [...']''使用'string.lower()==“yes”'可能会更清晰一些 –

2

当你编写if语句并且你有多个条件时,你必须写两个条件并比较它们。这是错误的:

if ans == 'Yes' or 'yes': 

,这是确定的:

if ans == 'Yes' or ans == 'yes': 
1

这不是从其他语言不同:

def main(y_b,c_y): 
    ans = input('R u Phil?') 
    if ans == 'Yes' or ans == 'yes': 
      years = y_b-c_y 
      print('U r', abs(years), 'jahre alt') 
    elif ans == 'No' or ans == 'no': 
      print("How old r u?") 
    else: 
      print('Sorry') 

main(2012,2016) 

但是您可能希望使用一个简单的测试:

if ans.lower() == 'yes':