类型错误:';浮动';对象在Python中不可调用
我对编码相当陌生,所以这可能是一个愚蠢的问题,但当我尝试运行我的程序时,我会遇到标题中提到的错误。 似乎是问题所在的代码位是:类型错误:';浮动';对象在Python中不可调用,python,python-3.x,Python,Python 3.x,我对编码相当陌生,所以这可能是一个愚蠢的问题,但当我尝试运行我的程序时,我会遇到标题中提到的错误。 似乎是问题所在的代码位是: def branch(replicas): ER = d * 0.5 * w N0 = len(replicas) newReplicas = [] ##### Error on this line for j in range( len(replicas) ): replica = replicas[j]
def branch(replicas):
ER = d * 0.5 * w
N0 = len(replicas)
newReplicas = [] ##### Error on this line
for j in range( len(replicas) ):
replica = replicas[j]
r2 = 0
for x in replica:
r2 += x * x
V = 0.5 * mass * w**2 * r2
W = exp(-(V - ER) / rootT)
mn = int(W + random.uniform(0,1))
if mn >= 3:
newReplicas.append( replica )
newReplicas.append( replica )
newReplicas.append( replica )
elif mn == 2:
newReplicas.append( replica )
newReplicas.append( replica )
elif mn == 1:
newReplicas.append( replica )
replicas = newReplicas
N1 = len(replicas)
ER = ER + ((hbar/deltaT)(1-(N1/N0)))
任何帮助都将不胜感激。提前谢谢 我想你的问题就在这里
ER = ER + ((hbar/deltaT)(1-(N1/N0)))
我想你想要的是这个
ER = ER + ((hbar/deltaT)*(1-(N1/N0)))
Python认为您想要的是调用通过计算
hbar/deltaT
1-(N1/N0)
所以如果
然后它认为您试图调用它创建的float对象,在本例中,它将是一个值为2.0的float对象,参数为求值结果
hbar/deltaT
1-(N1/N0)
因为float对象是不可调用的,所以这不起作用,并引发异常
基本上,您可以通过将乘法运算符放在
(hbar/deltaT)
及
以
((hbar/deltaT)*(1-(N1/N0)))
这就是我认为你想要做的。除非你不想做乘法你的最后一行应该做什么?最后一行应该修改一个变量ER,我在这里可以看到的块前面的一行中定义了这个变量。谢谢你指出这一点,我已经修复了它,不再得到错误!我冒昧地猜测,在闭括号和开括号之间有一个乘法。否则,将在那里生成TypeError。在全局上下文中定义了许多变量:d、w、mass。这不是问题,但也不是好的做法。这些变量都是我需要在程序的各个部分使用的输入值。在全球范围内定义事物有什么坏处?