为什么这个多项式函数会抛出一个SyntaxError?

时间:2015-01-28 06:58:47

标签: python linux ubuntu polynomial-math

我正在尝试编写一个基本算法来使用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 

4 个答案:

答案 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)