[英]Python: Recursion, I keep getting the wrong value, what I can do?
def answer():
if True:
ans = raw_input('Enter y/n:')
if ans != "y" and ans != "n":
print "Try again"
answer()
elif ans == "n":
return False
elif ans == "y":
return True
if answer():
print "It's working!, you entered Y"
else:
print "You entered N"
当我执行此代码时,按几次Enter键或输入错误的字母,然后输入y,我总是得到“您输入了N”,而不是“它正在运行!您输入了Y”。
我不知道出了什么问题,请帮帮我。
您将在if
块中放弃函数的返回值。 您应该将其更改为:
if ans != "y" and ans != "n":
print "Try again"
return answer()
如果您不返回该值,则您的函数将返回None
, if
在外部if
,则将其评估为False
。 另外,您的函数中也不需要if True:
PS:请避免为此任务使用递归。 您可以使用while
循环轻松地执行此操作,该循环会反复进行,直到用户未通过正确的输入为止,并在成功后立即中断。 另外,请给用户进行一定次数的尝试以传递正确的输入,以避免无限循环。
在这种情况下,您实际上不需要递归,只需使用无限循环即可,如果答案不是“ y”或“ n”,则不返回:
def answer():
while True:
ans = raw_input('Enter y/n:')
if not ans or ans not in "yn":
print "Try again"
else:
return ans == "y" # This is more succinct
if answer():
print "It's working!, you entered Y"
else:
print "You entered N"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.