为了账号安全,请及时绑定邮箱和手机立即绑定

Python:为什么变量被当作“NoneType”,尽管它被定义为整数?

Python:为什么变量被当作“NoneType”,尽管它被定义为整数?

一只萌萌小番薯 2022-09-06 17:54:41
我正在用Python制作一个简单的脚本作为评估阿克曼函数的练习。首先,脚本要求用户输入,然后尝试计算其余部分。代码如下: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时,特别是对于计算(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,因此它们不能被添加或减去。为什么会这样,我该如何解决这个问题?
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

任何富有成效的递归函数都必须具有一个或多个 return 语句。请参考此内容。


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))

应该像你期望的那样工作。


查看完整回答
反对 回复 2022-09-06
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信