提问者:小点点

带参数的函数。RecursionError:相比之下超过了最大递归深度


我正在使用函数和参数,甚至在函数内部调用时使用简单的代码,我得到了如下错误:第7行,如果ask=='yes': RecursionError:最大递归深度超过比较

如果我输入:是的答案,是的,它可以正常工作,但是当我输入:否并且函数被称为belowe else语句时,我得到错误:第5行,在问题中if ask=='yes': RecursionError:最大递归深度超过比较

我做错了什么?BTW我用谷歌搜索了这个问题,但没有解决问题sys. setpostsionlimited(5000),仍然收到错误:

ask = input("Are you OK?:").lower()
asked = ask
def question(n):

    if ask == 'yes':
        return n

    else:
        question(n)

print (question(asked))

我尝试了另一种方式:

def question():
    ask = input("Are you OK?:").lower()
    if ask != 'yes':
        question()
    else:
        return ask


print(question())

但在这段代码中,只有当我立即回答“是”时,它才有效,如果我第一次回答“否”,它会按预期再次询问,当我第二次回答“是”时,它会返回并打印:NONE。


共1个答案

匿名用户

问题()是在每次调用中提出一个新问题。print(问题())只关注第一个问题的答案。当您为第一个问题键入No时,问题()被称为提出第二个问题,并将返回到您的第一个问题。之后的任何答案都只需提出新问题if ask!=yes或返回结果给该问题if ask==yes,但不影响第一个问题中的返回。

您可以使用while循环继续对同一问题提出新答案,直到满足条件:

def question():
    ask = input("Are you OK?:").lower()
    while ask != 'yes':
        ask = input("Are you OK?:").lower()
    return ask

print(question())