使用python在相对复杂的数学表达式中确定分子和分母

tip*_*ipu 6 python math algebra

我正在尝试将计算器输入转换为LaTeX.如果用户输入:

(3x^(x+(5/x)+(x/33))+y)/(32 + 5)
Run Code Online (Sandbox Code Playgroud)

我必须把它转换成这个:

frac{3x^(x+frac{5}{x}+frac{x}{33})+y}{32 + 5x}
Run Code Online (Sandbox Code Playgroud)

但是我在确定分子何时开始和结束时遇到问题.有什么建议?

eum*_*iro 5

看看编译器

compiler.parse('(3*x**(x+(5/x)+(x/33))+y)/(32 + 5)')
Run Code Online (Sandbox Code Playgroud)

回报

Module(None, Stmt([Discard(Div((Add((Mul((Const(3), Power((Name('x'), Add((Add((Name('x'), Div((Const(5), Name('x'))))), Div((Name('x'), Const(33))))))))), Name('y'))), Add((Const(32), Const(5))))))]))
Run Code Online (Sandbox Code Playgroud)

这可以更容易地转换为LaTeX代码.您将不得不编写方法,以递归方式处理每个代码(Div,Add,Const,Name,Power,...)及其参数,并返回适当的LateX代码.


Jér*_*dix 4

已经存在用于这种转换的包:Py2Tex

如果你想重用这个包,你可以使用这个py2tex.Interpret类来做到这一点。