如何将多项式用户输入转换为 python 可读形式

How to convert a polynomial user input into python readable form

我有以下输入:

我想将它转换成 python 这样的可读形式 'x**2 + 2*x + 2' 以便我可以将它用作其他函数的输入。我有:

def func_parse(func):
    return func.replace("^","**")

但这只会解决电源部分。我还想在“2x”之间添加“*”以符合 python 语法。

安装sympy

from sympy.parsing.sympy_parser import (
    parse_expr, stringify_expr, standard_transformations,
    implicit_multiplication_application, convert_xor
)

transformations = (standard_transformations 
                   + (implicit_multiplication_application, convert_xor))

f = 'x^2 + 2x + 3'
expr = parse_expr(f, transformations=transformations)

输出:

>>> str(expr)
'x**2 + 2*x + 3'

更新

Evaluate the polynomial output with an integer value, let's say (x =2).

>>> expr.evalf(subs=dict(x=2))
11.0000000000000