在某些条件下可保存数字的递归函数

问题描述 投票:1回答:3

[我正在尝试在Python中创建一个函数,如果该函数大于或等于输入中先前提供的另一个数字(并保存在另一个变量上),则使用递归保存一个特定的数字。

a = 6

def attempts(k):
    n = int(input("How many attempts do you want to make? "))
    if n>=k:
        return n
    else:
        print("You must make at least {} attempts to play!".format(k))
        attempts(k)

b = attempts(a)

问题是,如果我不立即插入“正确的”数字,则变量“ b”变为NoneType。我怎么解决这个问题?对不起任何错字,我不是母语人士。

python function recursion definition
3个回答
3
投票

将函数的最后一行更改为:

return attempts(k)

当前,从第一个递归调用开始的结果(如果发生)被丢弃,这导致最外层调用返回None


1
投票

在else语句中,您没有返回任何内容,设置b等于无。在else语句中添加return语句,如果else语句出现,则返回想要b等于的任何内容。

您的代码现在的工作方式,您应该在else语句中添加return attempts(k)并删除当前的最后一行,attempts(k)这将工作相同,只不过b具有一个值。


0
投票

else情况下,您评估attempts(k),但不返回。因此它被评估为None。更改

attempts(k)

收件人

return attempts(k)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.