对元组抛出Python-TypeError。麻省理工学院开放式课程6.00问题集2简介

对元组抛出Python-TypeError。麻省理工学院开放式课程6.00问题集2简介,python,tuples,typeerror,Python,Tuples,Typeerror,我有点不明白为什么会抛出这个类型错误 Traceback (most recent call last): File "<pyshell#19>", line 1, in <module> evaluate_poly(polyTestTwo,-13) File "C:\Users\robert\Desktop\programming\MIT open courseware\ps2\ps2_newton.py", line 22, in evaluate

我有点不明白为什么会抛出这个类型错误

Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    evaluate_poly(polyTestTwo,-13)
  File "C:\Users\robert\Desktop\programming\MIT open courseware\ps2\ps2_newton.py", line  
22, in evaluate_poly
    valHolder+=((poly[i]*x)**i)
TypeError: tuple indices must be integers
我输入以获得这个特定错误,如下所示

>>>polyTest=(0.0,0.0,5.0,9.3,7.0) 
>>>evaluate_poly(polyTest,-13)

知道是什么引起的吗?我认为元组可以有浮点数作为值?

您的循环
for I in poly
迭代
poly
的值,而不是索引

如果需要索引,请使用
enumerate()
函数添加这些索引;您可以在循环中同时获得索引和值:

def evaluate_poly(poly, x):
    valHolder = 0.0
    for i, value in enumerate(poly):
        valHolder += (value * x) ** i
    return valHolder

您也不需要在这里测试循环的结束,也不需要将结果转换为浮点;它已经是一个浮点。

您的循环
for i in poly
迭代
poly
的值,而不是索引

如果需要索引,请使用
enumerate()
函数添加这些索引;您可以在循环中同时获得索引和值:

def evaluate_poly(poly, x):
    valHolder = 0.0
    for i, value in enumerate(poly):
        valHolder += (value * x) ** i
    return valHolder

您也不需要在这里测试循环的结束,也不需要将结果转换为浮点;它已经是一个浮点。

请注意,如果将公式示例输出解释为
(7*-13)**4
等,则该输出毫无意义;这个数字是66812013.671,而不是180339.9。我不知道如何将该总和解释为
(7*-13**4)
,等等。相反,总和为-221204.1。请注意,如果将其解释为
(7*-13)**4
,则公式示例输出毫无意义;这个数字是66812013.671,而不是180339.9。我不知道如何解释这个总和,因为
(7*-13**4)
,等等。总和改为-221204.1。