我写这段代码
def evaluate_poly(poly, x):
"""
Computes the value of a polynomial function at given value x. Returns that
value as a float.
Example:
>>> poly = [0.0, 0.0, 5.0, 9.3, 7.0] # f(x) = 5x^2 + 9.3x^3 + 7x^4
>>> x = -13
>>> print evaluate_poly(poly, x) # f(-13) = 5(-13)^2 + 9.3(-13)^3 + 7(-13)^4
180339.9
poly: list of numbers, length > 0
x: number
returns: float
"""
# FILL IN YOUR CODE HERE ...
answer = 0.0
for i in range(0, len(poly)):
answer +=poly[i]*(x**i)
return float(answer)
并始终如一地获得回复
Traceback (most recent call last):
File "<pyshell#53>", line 1, in <module>
evaluate_poly( [0.0, 0.0, 5.0, 9.3, 7.0], -13)
File "/Users/katharinaross/Downloads/ps2/ps2_bisection.py", line 28, in evaluate_poly
answer +=poly[i]*(x**i)
TypeError: 'list' object is not callable
所有的“”“都是我教授关于代码应如何运行的例子的说明。这是什么意思?
答案 0 :(得分:0)
该错误消息是我使用该行时获得的完全:
answer += poly(i)*(x**i)
(使用括号而不是方括号)。当我使用方括号时,我会得到正确的答案,如评论中所述:
$ cat qq.py
def evaluate_poly(poly, x):
"""
Computes the value of a polynomial function at given value x. Returns that
value as a float.
Example:
>>> poly = [0.0, 0.0, 5.0, 9.3, 7.0] # f(x) = 5x^2 + 9.3x^3 + 7x^4
>>> x = -13
>>> print evaluate_poly(poly, x) # f(-13) = 5(-13)^2 + 9.3(-13)^3 + 7(-13)^4
180339.9
poly: list of numbers, length > 0
x: number
returns: float
"""
# FILL IN YOUR CODE HERE ...
answer = 0.0
for i in range(0, len(poly)):
answer +=poly[i]*(x**i)
return float(answer)
print evaluate_poly ([0.0,0.0,5.0,9.3,7],-13)
$ python qq.py
180339.9
因此,要么你已经不再使用代码和输出(不太可能),或者你的Python解释器处理索引操作符的方式有问题。
由于这在其他环境中运行良好,因此不太可能是代码本身,因此您需要搜索其他原因。
作为第一步,你应该创建一个文件,除了上面我qq.py
文件的内容之外什么都不包含,然后运行它以查看它是否表现出类似的问题。
其次,我会检查你的堆栈跟踪文件(/Users/katharinaross/Downloads/ps2/ps2_bisection.py
)中的文件实际上是你认为的文件。
同时向我们展示整个文件,因为顶部可能存在影响您给定代码的内容。
我提到了所有这一切,因为你的示例代码中的异常不在第28行(根据堆栈跟踪),它实际上在第19行附近,所以可能有一些你没有向我们展示的东西。