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"
Run Code Online (Sandbox Code Playgroud)
当我执行这段代码时,我按Enter键几次或输入错误的字母,然后我输入y,我总是得到"你输入N"而不是"它正在工作!你进入了Y".
我无法弄清楚是什么问题,请帮帮我.
您正在丢弃if块中函数的返回值.您应该将其更改为:
if ans != "y" and ans != "n":
print "Try again"
return answer()
Run Code Online (Sandbox Code Playgroud)
如果不返回该值,则将返回您的函数None,该函数将False在外部进行评估if.此外,if True:您的功能不需要内部.
PS:请避免使用递归来完成此任务.您可以使用while循环轻松执行此操作,循环将迭代直到用户未传递正确的输入,并在成功后立即中断.此外,为用户提供一定数量的尝试来传递正确的输入,以避免无限循环.