给出以下整数和计算
from __future__ import division
a = 23
b = 45
c = 16
round((a/b)*0.9*c)
这导致:
TypeError: 'int' object is not callable.
如何将输出舍入为整数?
答案 0 :(得分:106)
代码中的其他地方你有类似的东西:
round = 42
然后当你写
round((a/b)*0.9*c)
被解释为对绑定到round
的对象的函数调用,即int
。那就失败了。
问题是无论代码将int
绑定到名称round
。找到并删除它。
答案 1 :(得分:5)
通过将round
绑定到其他地方,停止在其他地方踩踏int
。
答案 2 :(得分:2)
我得到了同样的错误
def xlim(i,k,s1,s2):
x=i/(2*k)
xl=x*(1-s2*x-s1*(1-x)) /(1-s2*x**2-2*s1*x(1-x))
return xl
... ... ... ...
>>> xlim(1,100,0,0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in xlim
TypeError: 'int' object is not callable
阅读这篇文章后,我意识到我忘记了乘法*所以
def xlim(i,k,s1,s2):
x=i/(2*k)
xl=x*(1-s2*x-s1*(1-x)) /(1-s2*x**2-2*s1*x*(1-x))
return xl
xlim(1.0,100.0,0.0,0.0)
0.005
罐
答案 3 :(得分:2)
在我的情况下,我改变了:
return <variable>
使用:
return str(<variable>)
尝试使用以下内容并且必须正常工作:
str(round((a/b)*0.9*c))
答案 4 :(得分:1)
有时问题是在计算时忘记了运算符。
示例:
print(n-(-1+(math.sqrt(1-4(2*(-n))))/2))
而不是
它必须是
print(n-(-1+(math.sqrt(1-4*(2*(-n))))/2))
HTH
答案 5 :(得分:0)
我也面临这个问题,但情况略有不同。
场景:
param = 1
def param():
.....
def func():
if param:
var = {passing a dict here}
param(var)
这里看起来很简单,也是一个愚蠢的错误,但是由于实际代码中有多行代码,因此我花了一些时间才知道我使用的变量名与函数名相同,因此收到此错误。
将函数名称更改为其他名称,并且可以正常工作。
因此,基本上,根据我的理解,此错误意味着您正在尝试使用整数作为函数,或更简单地说,被调用的函数名在代码中的某些地方也被用作整数。 因此,只需尝试找出所有出现的被调用函数名称,然后查看该名称是否在某处被用作整数。
我很难找到它,因此,在这里分享它,以便其他人可以节省他们的时间,以防万一他们陷入该问题。
希望这会有所帮助!
答案 6 :(得分:0)
如前所述,您的代码中可能会有一个名为round的变量(类型为int
),将其删除应该可以消除该错误。但是,对于Jupyter笔记本而言,仅清除单元格或将其删除可能不会使变量超出范围。在这种情况下,您可以在删除变量后重新启动笔记本计算机以重新开始。
答案 7 :(得分:0)
这个错误有两个原因“TypeError: 'int' object is not callable”
考虑
a = [5, 10, 15, 20]
max = 0
max = max(a)
print(max)
这将产生 TypeError: 'int' object is not callable.
只需将变量名称“max”更改为 var(say)。
a = [5, 10, 15, 20]
var = 0
var = max(a)
print(var)
上面的代码会完美运行,没有任何错误!!
考虑
a = 5
b = a(a+1)
print(b)
这也会产生 TypeError: 'int' object is not callable.
您可能忘记将运算符放在中间(本例中为“*”)