TypeError评估多项式

时间:2016-10-25 19:44:08

标签: python list

尝试使用Horner的规则评估函数。虽然遇到了问题;我一直收到“TypeError:'int'对象不可迭代”。任何人都可以快速帮我找到解决这个问题的方法吗? 这是我的代码:

def evaluatePoly(poly, x_):
    polyTotal = 0
    for nn in len(poly):
        polyTotal *= x_ + poly[nn]
    return float(polyTotal)

poly作为列表​​进入函数。我认为这是我的问题,但是如何修复我的代码以适应这一点。

2 个答案:

答案 0 :(得分:3)

您的问题与poly无关。您正试图在nn而不是len(poly)上重复range(len(poly))次。但是,最好使用foreach循环,这样可以使代码看起来像这样

def evaluatePoly(poly, x_):
  polyTotal = 1
  for i in poly:
    polyTotal *= x_ + i
  return float(polyTotal)

polyTotal也必须初始化为1,因为0次的任何内容都是0

答案 1 :(得分:1)

你的问题是你试图迭代poly的长度,而不是poly本身。将您的代码更改为:

def evaluatePoly(poly, x_):
    polyTotal = 1
    for nn in poly:
        polyTotal *= x_ + nn
    return float(polyTotal)

或者,如果你真的想通过索引,你可以这样做:

def evaluatePoly(poly, x_):
    polyTotal = 1
    for nn in range(len(poly)):
        polyTotal *= x_ + poly[nn]
    return float(polyTotal)

您还希望将polyTotal初始化为0以外的值,可能为1,否则您每次都会得到0