我正在編寫一個程序來評估一個多項式,作爲係數元組(從0度到n度)給出。我定義函數,然後用多項式的raw_inputs和x的值來調用它。Python元組索引遞歸:「不能通過類型爲float的非int類乘法序列」
這是在Python 2.5.4
這是在編程在線課程的練習,對我的生活我想不出什麼錯誤;我的程序是相同的給出解決方案,以及,它返回相同的錯誤:
"line 19, in evaluate_poly
polySum += poly[n] * (x ** n)
TypeError: can't multiply sequence by non-int of type 'float'"
的代碼如下:
def evaluate_poly(poly, x):
"""
Computes the polynomial function for a given value x. Returns that value.
Example:
>>> poly = (0.0, 0.0, 5.0, 9.3, 7.0) # f(x) = 7x^4 + 9.3x^3 + 5x^2
>>> x = -13
>>> print evaluate_poly(poly, x) # f(-13) = 7(-13)^4 + 9.3(-13)^3 + 5(-13)^2
180339.9
poly: tuple of numbers, length > 0
x: number
returns: float
"""
polySum = 0.0
for n in xrange(0, len(poly)-1,1):
polySum += poly[n] * (x ** n)
return polySum
function = tuple(raw_input('Enter your polynomial as a tuple of numbers, going from degree 0 to n: '))
x = float(raw_input('Enter the value of x for which your polynomial is to be evaluated: '))
print 'f(x) =', evaluate_poly(function, x)
第一個輸入,我會做這樣的事情(1, 1,1,1)然後我會輸入1作爲第二個,並且我得到上述錯誤。
這是怎麼回事?我認爲for循環中變量n的括號只是索引元組中的每個連續值,但錯誤似乎是說poly [n]是一個序列而不是一個數字。
感謝您的幫助。
試''print'ing分配function'之後 - 那會給你錯誤的根源 – MattDMo