【问题标题】:Why am I getting this error? I don't understand what is typerror为什么我会收到此错误?我不明白什么是类型错误
【发布时间】:2017-04-05 01:39:49
【问题描述】:

我得到:

TypeError: *: 'int' 和 'NoneType 不支持的操作数类型

阶乘程序中的错误。谁能帮帮我..

def factorial(n):
     if n == 0:
         return 1
     if n > 1:
         return n*factorial(n -1)

print(factorial (5)) 

【问题讨论】:

  • 您似乎没有很好地处理这里的条件:n == 1 时会发生什么?试试:factorial = lambda n: 1 if n == 0 else n * factorial(n-1).

标签: python-3.x python-3.5


【解决方案1】:

当你从factorial(2)开始时会发生什么,当n == 1时函数返回什么?

如果没有命中返回语句,则函数隐式返回None

【讨论】:

  • 是的......这就是原因......非常感谢。
【解决方案2】:

n > 1 更改为 n >= 1,因为在递归中没有 n = 1 的情况。

【讨论】:

    【解决方案3】:

    也许n == None 来检查它只是做一个

    if n == None:
        print("n == None")
    

    如果您确定它不是 null,则将其转换为 int:n = int(n)

    自从我在 python 中编码后,长时间没有编辑并且不为空

    【讨论】:

    • null 在 python 中不存在
    • 这仍然没有帮助。问题是它不应该是 None;只是找出它是否不能解决任何问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 2018-06-22
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多