繁体   English   中英

Python:递归,我一直得到错误的值,该怎么办?

[英]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()

如果您不返回该值,则您的函数将返回Noneif在外部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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM