擅长:python、mysql、java
<p>你的测试代码</p>
<pre><code>str(2 + 2 -3 + 8 * 7)
</code></pre>
<p>与生产代码不同</p>
<pre><code>str(parser.getPayload()[7:])
</code></pre>
<p>扩展到</p>
<pre><code>str("2 + 2 -3 + 8 * 7")
</code></pre>
<p>假设你通过同样的方程。好事情是你有管道工作,现在你需要实现实际的数学解算器,如</p>
<pre><code>str(solve_math(parser.getPayload()[7:]))
def solve_math(expr : str) -> float:
"""
Parses and evaluates math expression `expr` and returns its result.
"""
</code></pre>
<p>在这里,您需要首先将表达式字符串解析为表示数据、运算符/函数和求值顺序的结构。所以你的“2+2”表达式变成了<code>Addition(Const(2), Const(2))</code>,而“2+2*3”表达式变成了<code>Addition(Const(2), Multiplication(Const(2), Const(3)))</code>,然后你只需要计算它,这应该相当简单。你知道吗</p>
<p>我推荐<code>pyparsing</code>来帮助你。你知道吗</p>