我正在尝试将计算器输入转换为 LaTeX。如果用户输入:
(3x^(x+(5/x)+(x/33))+y)/(32 + 5)
我必须把它转换成这样:
frac{3x^(x+frac{5}{x}+frac{x}{33})+y}{32 + 5x}
但是我在确定分子何时开始和结束时遇到了问题。有什么建议吗?
最佳答案
看看compiler
compiler.parse('(3*x**(x+(5/x)+(x/33))+y)/(32 + 5)')
返回
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))))))]))
可以更容易地转换为 LaTeX 代码。您将必须编写方法,以递归方式处理每个代码(Div、Add、Const、Name、Power 等)及其参数,并返回适当的 LateX 代码。
关于python - 使用python确定相对复杂的数学表达式中的分子和分母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942657/