多项式作为 Python 中的输入

Polynomials as input in Python

如何让 Python 将多项式作为输入,同时保持用 x 代替实数值的能力?

这是我尝试过的:

fx=input("Enter a Polynomial: ")
x=float(input("At wich position should the polynomial be evaluated: "))

while True:
    print(eval("fx"))

    continue

出现的问题是 Python 只会将 fx 计算为 x 而不是我通过第二个输入给 x 的值。

由于特定变量,例如x,并不重要,只需让用户输入一个数字序列,这将是多项式的系数。让用户输入常数系数,然后是线性系数,然后是二次系数,等等。如果这些是作为单独的输入完成的,您将需要一个停止信号,一个不是数字的信号。如果您希望所有这些都作为一个输入,用户可以在系数之间放置空格或逗号或类似的东西,并且不需要停止信号。

然后将系数放入列表中:如果输入是一行,只需使用 split() 方法。对多项式的任何操作,例如代入变量,都可以用这个列表来完成。例如,可以使用 Horner's method 轻松高效地完成替换。有简单的加法、减法、乘法、除法、微分等算法。如果您需要有关如何在 Python.

中实现任何这些算法的更多详细信息,请告诉我

Python的eval()函数非常危险,所以我强烈建议你不要使用它,尽管它很简单。

这应该有帮助:

def eval_polynomial(poly, val):
    xs = [ x.strip().replace('^','**') for x in poly.split('+') ]
    return sum( [eval(n.replace('x', str(val))) for n in xs] )

请记住,出于安全原因,您之前必须确保 val 是一个数字。

编辑:Dipen Bakraniya 提出的更具自我描述性的版本

def fix_power_sign(equation):
    return equation.replace("^", "**")

def eval_polynomial(equation, x_value):
    fixed_equation = fix_power_sign(equation.strip())
    parts = fixed_equation.split("+")
    x_str_value = str(x_value)
    parts_with_values = (part.replace("x", x_str_value) for part in parts )
    partial_values = (eval(part) for part in parts_with_values)
    return sum(partial_values)

Python 3

你可以这样写:

fx = input("Enter a Polynomial: ")
x = float(input("At wich position should the polynomial be evaluated: "))

print(eval(fx.replace('x', str(x))))

注意:以上代码只有在您以 * 的形式输入多项式时才有效。例如:x**4 - x + 1

此代码将用于将多项式作为 y 的输入。

y = x**2 + x*4 并且它将 x 的输入作为浮点值,就像如果我为 x 给出 2 那么这个表达式将打印 12。 在此代码中,我使用 eval 表示求值,即 python 3 的内置函数 在此 eval 中,多项式函数作为字符串传递,然后自变量的值,即多项式 y 的 x 在 eval 中作为字符串作为第二个参数传递。

y = input("输入一个多项式:") x = float(input("在哪个位置计算多项式:"))

dict = {}

d['x'] = x

打印(评估(y,d))