TypeError:'float' 对象不可调用
- 2025-03-21 09:05:00
- admin 原创
- 40
问题描述:
我试图在以下等式中使用数组中的值:
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
原因是什么?如何解决这个问题?
解决方案 1:
缺少一个运算符,可能是*
:
-3.7 need_something_here (prof[x])
出现“不可调用”的情况是因为括号——以及缺少将括号转换为优先运算符的运算符——导致 Python 尝试将-3.7
(浮点数)的结果作为函数调用,这是不允许的。
在这种情况下也不需要括号,以下内容可能足够/正确:
-3.7 * prof[x]
正如莱戈拉斯指出的那样,还有其他问题可能需要解决:
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 --^
解决方案 2:
问题在于-3.7(prof[x])
,它看起来像一个函数调用(注意括号)。只需像*
这样使用-3.7*prof[x]
。
解决方案 3:
您忘记了和*
之间。-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
,但这只是猜测)。
解决方案 4:
虽然这可能不是对这个问题的特别回答,但您可能收到此错误的另一个原因是如果您将“范围”定义为变量。
range = 0
for x in range(len(array)):
#will give an error, because it's trying to multiply "range" with "(len(array))"
解决方案是将变量重命名为同义词(句点)或向其附加一些内容(range1,range_a)
解决方案 5:
这个问题已经得到解答,但对于其他人来说,同样的错误很可能是由于以下原因造成的:有时,当您使用与内置函数之一相同的变量名,并且当您稍后尝试调用该内置函数时,它会给您一个类型错误。例如,在您的代码中的某个地方,您将一个变量定义为:
总和 = 0
也许可以将其用作全局数据框中的累加器变量。现在,稍后当您定义一个函数并想要在其中调用内置函数 sum() 时,它会给出类型错误,因为您已经覆盖了内置函数名称。这就是为什么您应该避免使用内置函数名称(如str、range、sum 等)作为代码中的变量名称之一。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD