【发布时间】:2019-06-12 23:07:00
【问题描述】:
总的来说,我对 python/编程相当陌生,我正在尝试编写一个函数,它将作为字符串传递的方程转换为其数字表示形式并进行一些基本计算。我在使用括号时遇到了一些问题,因为我不知道如何表示它们的操作顺序。
任何提示帮助将不胜感激。谢谢!
EquationAsString ="( 2 + 3 ) * 5"
def toEquation(EquationAsString):
Equation = EquationAsString.split(' ')
#store info in list and use it like a stack, check the type etc.
answer = 25
return answer
【问题讨论】:
-
是否保证空格作为输入脚本的分隔符?
-
这种练习通常是在正式的计算机科学编译器设计课程中介绍解析器时首先教授的内容之一。不乏在线示例;寻找你正在构建和评估抽象语法树的那些,以沿着正确的道路前进。
-
我怀疑这个问题不是您应该问的正确问题。这听起来像是一个编程练习,而且您似乎没有考虑过您计划如何“进行一些基本计算”,因为在数学方程式的上下文中,括号没有数字等价物。
-
(要清楚——很多,如果不是大多数,链接的重复问题的答案确实正确处理括号)。
-
我会使用Python Lex-Yacc 来构建解析器。或者我会转换为 Polish notation -
"* + 2 3 5"- 这不需要括号。
标签: python