如何将多项式用户输入转换为 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
我有以下输入:
我想将它转换成 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