繁体   English   中英

类型错误:+ 不支持的操作数类型:“int”和“NoneType”

[英]TypeError: unsupported operand type(s) for +: 'int' and 'NoneType

我是 Python 的新用户,我遇到了 None 类型的问题,我看了不同的问题,但问题仍然存在。

我的代码是计算阶乘

def fact(k): 
    if k > 0: 
        result = k + fact(k-1) 
        print(result) 
    else: 
        result=0 
    return result

fact(3)

我尝试了您的代码,但无法产生该错误。 我认为你有一些缩进问题,你的循环不符合你期望的逻辑。 请记住循环中的内容和循环外的内容取决于空格,因此请注意制表符和空格。

你的逻辑也有一些错误

  1. 你需要 k * fact(k-1) 而不是 +
  2. else 应该是 result = 1

编辑后的代码是这样的:

def fact(k): 
    if k > 0: 
        result = k * fact(k-1) 
        print(result) 
    else: 
        result=1 
    return result

还有一种更 Pythonic 的方式来编写 function 是让它返回实际结果,而不是将结果传递给变量并返回变量。 我的假设是您在 function 中打印结果以排除故障,因为这在您的最终版本中肯定会被删除。 无论如何,请尝试以下代码:

def fact_v2(k): 
    if k > 0: 
        return k * fact_v2(k-1) 
    else: 
        return 1 

你会这样称呼你 function :

print(fact_v2(11))

祝你好运,Python 是一种有趣的语言,乍一看可能令人生畏,但你会成功的!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM