Python:递归,我一直得到错误的值,我能做什么?

Sal*_*lah 0 python recursion

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".

我无法弄清楚是什么问题,请帮帮我.

Roh*_*ain 9

您正在丢弃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循环轻松执行此操作,循环将迭代直到用户未传递正确的输入,并在成功后立即中断.此外,为用户提供一定数量的尝试来传递正确的输入,以避免无限循环.