Python 函数,如果只接受一个输入
我的代码在这里:。我在Codecademy上做PygLatin练习时被冲昏头脑了,所以大部分是。。。初学者 对不起,时间太长了。问题是,当出现[Y/N]问题时,无论我键入什么,它的行为都好像我输入了“是” 相关摘录之一:Python 函数,如果只接受一个输入,python,function,Python,Function,我的代码在这里:。我在Codecademy上做PygLatin练习时被冲昏头脑了,所以大部分是。。。初学者 对不起,时间太长了。问题是,当出现[Y/N]问题时,无论我键入什么,它的行为都好像我输入了“是” 相关摘录之一: def TryAgain(): repeat = raw_input("\nStart over?[Y/N] ").lower() if repeat == "y" or "yes" : print "OK.\n" PygLati
def TryAgain():
repeat = raw_input("\nStart over?[Y/N] ").lower()
if repeat == "y" or "yes" :
print "OK.\n"
PygLatin()
elif repeat == "n" or "no" :
raw_input("\nPress ENTER to exit the English to Pig Latin Translator.")
sys.exit()
else:
TryAgain()
无论我输入什么,它都会打印“OK.”,然后再次启动PygLatin()函数。第一个
if
语句中的条件:
if repeat == "y" or "yes":
print "OK.\n"
PygLatin()
始终计算为True
,而不考虑repeat
的值。这是因为“Yes”
不是空字符串(它的布尔值为True
),因此或
总是导致True
。解决此问题的一种方法是:
if repeat == "y" or repeat == "yes":
print "OK.\n"
PygLatin()
另一个(如sateesh在下面提到的)是:
您还应相应地更改
其他
条件如果按以下方式进行检查,则最好这样做:
if repeat in ("y","yes"):
...
elif repeat in ("n","no"):
...
通过将所有可能的值保留在元组(列表)中进行比较,代码
可读的。此外,如果要与更多值进行比较,则可以创建
用于存储这些值并与存储的值进行比较的元组(或列表)
价值观比如说,使用下面的方法可以使代码更具可读性:
acceptance_values = ('y','yes')
...
if repeat in acceptance_values :
...
如果
不是函数。谢谢,它现在可以工作了。需要澄清的是,len(str)>0的字符串在if
语句中等同于True?有关真值和假值的更多信息,请参阅手册中的。
acceptance_values = ('y','yes')
...
if repeat in acceptance_values :
...