Python 如何为简单的字符串方程创建自己的简单求值方法?
我正在尝试编写一个简单的方法来解析字符串方程,如“5*3-3+13”,并在不使用Python 如何为简单的字符串方程创建自己的简单求值方法?,python,algorithm,Python,Algorithm,我正在尝试编写一个简单的方法来解析字符串方程,如“5*3-3+13”,并在不使用eval()的情况下计算结果。我对如何设置运算符优先级有问题。我最初的想法是使用递归,但当方程中有连续的乘法或除法时,我会遇到麻烦。另一个想法是通过循环方程首先找到乘法和除法,但这需要太多的时间。有什么想法我可以利用吗?您试图做的是解析和计算一个简单的代数表达式。这是一个涉及面很广的主题,您不一定需要使用pythoneval,尤其是在担心代码注入的情况下 您可以使用现有库快速解决这个问题。我的第一个想法是同情 例如
eval()
的情况下计算结果。我对如何设置运算符优先级有问题。我最初的想法是使用递归,但当方程中有连续的乘法或除法时,我会遇到麻烦。另一个想法是通过循环方程首先找到乘法和除法,但这需要太多的时间。有什么想法我可以利用吗?您试图做的是解析和计算一个简单的代数表达式。这是一个涉及面很广的主题,您不一定需要使用pythoneval
,尤其是在担心代码注入的情况下
您可以使用现有库快速解决这个问题。我的第一个想法是同情
例如
您期望的值是
int(f)
或double(f)
,这取决于您是想要整数还是想要允许浮点值这样做有什么原因吗?我的意思是,symphy
一个伟大的python包,可以做到这一点和更多。eval
将是一个快速的解决方案,但使用for-loop方法和操作符检查会更好,或者使用pythonparser
结合eval
我只想了解它的实际工作原理,我刚刚找到了需要的算法,叫做“调车场和后缀计算器算法”,谢谢
import sympy
f = sympy.sympify("5*3-3+13")