计算二项式系数时出现NoneType相乘TypeError错误该如何修复
问题原因
你编写的factorial函数没有显式返回计算结果,Python中函数如果没有写return语句,默认会返回None值。你在binomial函数中调用factorial(k)和factorial(n-k)拿到的都是None,两个None执行乘法运算自然会抛出类型错误,PyCharm的高亮也是提前检测到了参数类型不匹配的潜在问题。
修复方法
修改factorial函数,在计算完成后返回结果,而不是仅打印结果。如果你不需要单独打印阶乘结果,直接把print(prod)改成return prod即可,修改后的完整代码如下:
def factorial(n): prod = 1 for i in range(1, n+1): prod *= i return prod def binomial(n, k): # 二项式系数为整数,建议用整数除法//替代/,避免输出浮点数 return factorial(n) // (factorial(k) * factorial(n-k)) for n in range(0,4): for k in range(0, n+1): print(f"n = {n} k = {k}\t{binomial(n,k)}")
如果你需要保留阶乘结果的打印逻辑,也可以在打印语句后补充返回语句:
def factorial(n): prod = 1 for i in range(1, n+1): prod *= i print(prod) return prod
内容的提问来源于stack exchange,提问作者fredericoamigo
相关产品推荐
相关产品推荐

