TypeError:'int'对象在列表中不可调用

时间:2014-03-06 17:28:38

标签: python arrays python-2.7

我正在尝试一个关于legendre函数的程序,如下所示,但它显示了一些错误。我不习惯Python中的数组,但在C ++中知道它们。

from math import *

j = 0
arr = [0 for i  in range (6)]
k= 3.75
arr[0]= 1
arr[1] = 1 
x0= -1
xf = 1
x= x0
h= 0.1

f1 = open('leg.dat', 'w')

while x< xf:
    for j in range(0,5):
        arr[j+2]= (arr[j] *(j*j + j -k)/((j+2)*(j+1)))
        print >>f1, x,(x**j)*(((j+2)(j+1)*arr[j]) - (j*(j-1)*arr[j]) - (2*j*arr[j]) + k*arr[j])
        x = x+h

f1.close ()

错误显示:

print>>f1, x,(x**j)*(((j+2)(j+1)*arr[j]) - (j*(j-1)*arr[j]) - (2*j*arr[j]) + k*arr[j])

TypeError: 'int' object is not callable

2 个答案:

答案 0 :(得分:4)

问题在于:

(j+2)(j+1)

Python试图以j+2作为参数调用j+1

>>> j = 1
>>> (j+2)(j+1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

您的意思是(j+2)*(j+1)吗?

答案 1 :(得分:1)

print >>f1, x,(x**j)*(((j+2)(j+1)*arr[j]) - (j*(j-1)*arr[j]) - (2*j*arr[j]) + k*arr[j])
                        ^^^  ^^^

您未指定这两个值之间的操作。你的意思是乘以它们吗?

print >>f1, x,(x**j)*(((j+2)*(j+1)*arr[j]) - (j*(j-1)*arr[j]) - (2*j*arr[j]) + k*arr[j])