2016-11-26 54 views
0

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

这里是我的尝试:

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的值。

+1

试试'eval(fx)'。 –

+0

这也做了工作。谢谢:-) –

回答

1

这应有助于:

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是出于安全原因的数字。

0

由于特定的变量,如x,没关系,只要有用户输入数字,这将是多项式的系数序列。用户输入常数系数,然后输入线性系数,然后输入二次系数等等。如果这些是作为单独的输入完成的,则需要一个停止信号,而不是一个数字。如果你想把它全部作为一个输入,用户可以在系数之间加上空格或逗号或类似的东西,并且不需要停止信号。

然后您将系数放入列表中:如果输入是一行,则只需使用split()方法。多项式的任何操作,例如替换到变量中,都可以用这个列表完成。例如,替换可以通过Horner's method轻松高效地完成。有简单的加法,减法,乘法,除法,微分等算法。让我知道你是否需要更多关于如何在Python中实现这些算法的细节。

Python的eval()功能是非常危险的,所以我强烈建议您不要使用,尽管它的简单。

+0

谢谢你的建议,使用coefficientmatrix而不是整个多项式的也似乎是一个有前途的想法,我会铭记在心为将来的项目。 –