0

パラメータを手動で導入する次のコードを使用すると、機能します。

def evaluatePoly(poly, x):
    result = 0
    for i in range(len(poly)):
        result += poly[i] * x ** i
    return float(result)

>>> evaluatePoly([1,2,2],2)
13

括弧なしの係数と、多項式を評価したい値のみを紹介するように求められます。このようなもの:

poly=(raw_input('Enter a list of coefficients from your polynomial equation: '))
x=int(raw_input('Enter the value where you want to evaluate your polynomial equation: '))

print(evaluatePoly(poly, x))

しかし、それを試してみると、Python は次のエラーを出します:

TypeError: unsupported operand type(s) for +=: 'int' and 'str'

どうすればいいですか?

ありがとう

4

2 に答える 2

0

input()でリストを評価しeval()、文字列からリストに変換します。あなたの評価は関数本体内にあることができます。私はこれらの行でそうしました

def evaluatePoly(poly, x):
    result = 0
    poly=eval(poly)
    for i in range(len(poly)):
        result += poly[i] * x ** i
    return float(result)

poly=(input('Enter a list of coefficients from your polynomial equation: '))
x=int(input('Enter the value where you want to evaluate your polynomial equation: '))

print(str(evaluatePoly(poly, x)))

そして私は得る

>>> 
Enter a list of coefficients from your polynomial equation: [1,2]
Enter the value where you want to evaluate your polynomial equation: 5
11.0

eval()を使用すると、プログラムが危険にさらされる可能性があることに注意してください。

于 2013-05-19T16:59:19.087 に答える
0

raw_input文字列を返します。次のように、文字列を値のリストに処理できます。

coeffs = raw_input('Enter a list of coefficients from your polynomial equation: ') # is a String
poly = coeffs.split() # split the string based on whitespace
poly = map(int, poly) # Convert each element to integer using int(...)

浮動小数点数を受け入れたい場合はfloatの代わりにint使用し、カンマで分割したい場合はのcoeffs.split(",")代わりに使用しますcoeffs.split()

>>> x=int(raw_input('Enter the value where you want to evaluate your polynomial equation: '))
Enter the value where you want to evaluate your polynomial equation: 2
>>> coeffs = raw_input('Enter a list of coefficients from your polynomial equation: ')
Enter a list of coefficients from your polynomial equation: 3 2 5
>>> poly = coeffs.split()
>>> poly = map(int, poly)
>>> print(evaluatePoly(poly, x))
27.0
>>>
于 2013-05-19T16:48:38.913 に答える