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

Why is this polynomial function throwing a SyntaxError?

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

你留下了乘法:

35*x**4-17*x**3+5*x**2+41*x-29

您需要明确执行如下乘法。 IE。 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) 

虽然我们在数学中写(35x)隐含的意思是(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 解析。

35*(x**4) - 17*(x**3) + 5*(x**2) + 41*x - 29