gpt4 book ai didi

Python:为什么尽管变量被定义为整数,但仍被视为 'NoneType'?

转载 作者:行者123 更新时间:2023-12-02 00:05:28 27 4
gpt4 key购买 nike

我正在用 Python 编写一个简单的脚本作为评估 Ackermann Function 的练习。 .首先,脚本要求用户输入,然后尝试计算其余部分。这是代码:

m = int(input('Please input m.\n'))
n = int(input('Please input n.\n'))


def compute(m, n):
if m == 0:
print(n + 1)
elif m > 0 and n == 0:
compute(m - 1, 1)
else:
compute(m - 1, compute(m, n - 1))


compute(m, n)

让我感到困惑的部分是当它返回 TypeError 时,特别是对于 compute(m, n) 中我尝试从 n 和 m 中加或减 1 的行。

print(n + 1)
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

我理解Python把所有的输入都当作字符串,这也是我特地把输入转换的原因在脚本的最开始使用 int() 。然而,TypeError 似乎暗示在 compute(m, n) 中,m 和 n 不是 int,而是 NoneType,因此它们不能被添加或减去。这是为什么,我该如何解决?

最佳答案

任何fruitful递归函数必须有一个或多个返回语句。引用this .

m = int(input('Please input m.\n'))
n = int(input('Please input n.\n'))

def compute(m, n):
if m == 0:
return n + 1
elif m > 0 and n == 0:
return compute(m - 1, 1)
else:
return compute(m - 1, compute(m, n - 1))


print(compute(m, n))

应该如您所愿地工作。

关于Python:为什么尽管变量被定义为整数,但仍被视为 'NoneType'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60770425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com