首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在尝试用函数进行数学运算时,会出现'NoneType‘和'NoneType’错误信息?

为什么在尝试用函数进行数学运算时,会出现'NoneType‘和'NoneType’错误信息?
EN

Stack Overflow用户
提问于 2021-06-05 02:10:31
回答 3查看 60关注 0票数 0

我试图让这个代码正常工作,但总是出现这个错误消息。代码如下:

代码语言:javascript
复制
  def fatorial(n):
    proximo = n - 1
    n = n * proximo
    while proximo > 1:
        proximo -= 1
        n = n * proximo
    return print(n) 
def coeficiente_binomial(n,k):
   a = fatorial(n)
   b = fatorial(k)
   div = b * fatorial(n-k) // a
   return print(div)

print(coeficiente_binomial(3,4))

错误消息如下:

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

我开始学习python,但我不知道如何做这个练习。非常感谢你的帮助

EN

回答 3

Stack Overflow用户

发布于 2021-06-05 02:20:51

尽量不要使用return print(n),只使用return nreturn div,因为对于这种类型的代码,每次调用函数时,它都会返回一条打印语句,而不是一个数字

票数 0
EN

Stack Overflow用户

发布于 2021-06-05 02:22:02

您的factorialcoeficiente_binomial返回的print.Try如下:

但是,如果这正是您要做的事情,请考虑您编写了calculate factorial(-1)

代码语言:javascript
复制
def fatorial(n):
    proximo = n - 1
    n = n * proximo
    while proximo > 1:
        proximo -= 1
        n = n * proximo
    return n
def coeficiente_binomial(n,k):
   a = fatorial(n)
   b = fatorial(k)
   div = b * fatorial(n-k) // a
   return div

print(coeficiente_binomial(3,4))
票数 0
EN

Stack Overflow用户

发布于 2021-06-05 02:45:10

你有3个打字错误。

代码语言:javascript
复制
a = fatorial(n) # missing letter c
b = fatorial(k) # missing letter c
div = b * fatorial(n-k) // a  # missing letter c

相反,它们应该是:

代码语言:javascript
复制
a = math.factorial(n)
b = math.factorial(k)
div = b * math.factorial(n-k) // a

在发出这些命令之前,还必须导入数学模块。

代码语言:javascript
复制
import math

现在,您的函数fatorial(n)返回一个None类型的对象。这是一个解释None类型对象的link

进行这些更正后,您会发现另一个问题。

代码语言:javascript
复制
div = b * math.factorial(n-k) // a
ValueError: factorial() not defined for negative values

这是因为math.factorial不能与负数一起工作,例如3-4 = -1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67842139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档