我对编码很陌生,所以这可能是一个愚蠢的问题但是当我尝试运行我的程序时,我得到了标题中提到的错误。 似乎是问题的代码是这样的:
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)))
任何帮助将不胜感激。提前谢谢!
答案 0 :(得分:1)
我认为你的问题就在这里
ER = ER + ((hbar/deltaT)(1-(N1/N0)))
我认为你所追求的是这个
ER = ER + ((hbar/deltaT)*(1-(N1/N0)))
Python认为你想要的是调用评估
返回的值的对象hbar/deltaT
所以,如果
hbar = 2.0
deltaT = 1.0
然后它认为你试图调用它创建的浮动对象,因为在这种情况下它将是值为2.0的浮点对象,其中包含评估结果的参数
1-(N1/N0)
由于float对象不可调用,因此不起作用,抛出异常。
基本上你可以通过将乘法运算符放在
之间来解决这个问题(hbar/deltaT)
和
(1-(N1/N0))
以
结尾((hbar/deltaT)*(1-(N1/N0)))
我认为你正在努力做到这一点。除非你不想做乘法