TypeError:'float'对象不可调用

时间:2011-08-03 16:21:22

标签: python math types

我正在尝试使用以下等式中的数组值:

for x in range(len(prof)):
    PB = 2.25 * (1 - math.pow(math.e, (-3.7(prof[x])/2.25))) * (math.e, (0/2.25)))

当我跑步时,我收到以下错误:

Traceback (most recent call last):
  File "C:/Users/cwpapine/Desktop/1mPro_Chlavg", line 240, in <module>
    PB = float(2.25 * (1 - math.pow(math.e, (-3.7(prof[x])/2.25))) * (math.e, (0/2.25)))
TypeError: 'float' object is not callable

这可能很简单,但我无法弄明白。任何帮助都会 非常感激。提前致谢

4 个答案:

答案 0 :(得分:25)

有一个操作员缺失,可能是*

-3.7 need_something_here (prof[x])

“is not callable ”的出现是因为括号 - 以及缺少将括号切换为优先运算符的运算符 - 使Python尝试调用 -3.7(浮点数)作为函数的结果,这是不允许的。

在这种情况下也不需要括号,以下可能就足够/正确:

-3.7 * prof[x]

快乐的编码。


正如Legolas所指出的,还有其他一些事情可能需要解决:

2.25 * (1 - math.pow(math.e, (-3.7(prof[x])/2.25))) * (math.e, (0/2.25)))
                                  ^-- op missing
                                                    extra parenthesis --^
               valid but questionable float*tuple --^
                                     expression yields 0.0 always --^

答案 1 :(得分:3)

问题在于-3.7(prof[x]),它看起来像一个函数调用(注意父项)。只需使用*这样的-3.7*prof[x]

答案 2 :(得分:2)

全部因为'( - 3.7(prof [x])' - 例如你错过了算子。

答案 3 :(得分:2)

您忘记了*-3.7之间的(prof[x])

因此:

for x in range(len(prof)):
    PB = 2.25 * (1 - math.pow(math.e, (-3.7 * (prof[x])/2.25))) * (math.e, (0/2.25)))

此外,似乎缺少(,因为我计算了6次(和7次),我认为(math.e, (0/2.25))缺少函数调用(可能math.pow,但这只是一个疯狂的猜测。)