我正在尝试编写一个基本算法来使用Python来评估四阶多项式。代码如下,我不确定我做错了什么。我想出了这个代码,我不确定它是否足以完成这个诀窍:
x = int(raw_input(":"))
def eval_poly(x):
if abs(x) > 0:
return 35x**4-17x**3+5x**2+41x-29
print eval_poly(x)
我得到的错误说35x**4
语法无效,我想要评估的多项式如下:
35x^4 - 17x^3 + 5x^2 + 41x -29
答案 0 :(得分:2)
虽然我们在数学中写(35 x )来隐含地表示(35 * x ),但Python解释器无法解决这个问题。您需要明确告诉35 * (x ** 4)
。
所以你修改了包含
的功能return 35 * (x ** 4) - 17 * (x ** 3) + 5 * (x ** 2) + 41 * x - 29
(括号不是绝对必要的,因为Python会在没有它们的情况下获得正确的操作顺序,但我认为它们有助于提高可读性。)
值得一说:当Python尝试评估表达式35x
时会抛出错误,但它不知道如何解释它。它以数字开头,因此不是变量(variables have to start with a non-digit character),但包含字母字符,因此不是数字。这不仅仅是因为它不知道这个表达式意味着什么,而是35x
不可能被Python解析。
答案 1 :(得分:1)
35*(x**4) - 17*(x**3) + 5*(x**2) + 41*x - 29
答案 2 :(得分:0)
你离开了乘法:
35*x**4-17*x**3+5*x**2+41*x-29
答案 3 :(得分:0)
您需要显式执行乘法,如下所示。即。 7x变为7 * x。
否则它看起来不错......
x = int(raw_input(":"))
def eval_poly(x):
if abs(x) > 0:
return 35*x**4-17*x**3+5*x**2+41*x-29
print eval_poly(x)