可能重复:
I’m making a PEMDAS solver and don’t know what to write
我正在制作一个pemdas求解器程序,我似乎无法解决用户写入程序的等式。我目前的代码是:
def pemdas():
print("type in your pemdas problem.")
prob = int(input())
solve(prob)
print(str(prob))
input()
pemdas()
答案 0 :(得分:5)
这实际上是一个比你想象的更难的问题,而且目前的形式很难回答这个问题。所以这里有一些建议的方法。您应该仔细研究这些内容并尝试其中一个或多个,然后在遇到麻烦时再回答一个更具体的问题。
可能你最好的选择是使用postfix将表达式转换为shunting-yard algorithm,然后使用堆栈来评估表达式。
另一种选择是使用PyParsing。 PyParsing允许您为字符串指定解析规则并将函数分配给某些标记;这将让您在解析阶段计算结果。这将是一个更抽象的方法。 (另外,在他们的示例页面上可能会有一些很好的例子。请好好看看!)