既然要对一个表达式进行计算,肯定要涉及对字符串的处理,和对一些数据的保存。所在我的思路里,我对数据做了一个简单的分类。不管这个表达式有多么复杂,只要不超出我们四则运算的范围我们就吧当前表达式分割出来的数据分成两类,一类是数据类,一类是符号类,将他们分别存储在两个线性结构中,在后期对他们进行有关联的处理
- 双栈
数据栈、
比如表达式"1+2+3="分割出来的数据栈如下图:
符栈、
同样的表达式"1+2+3=“提取出符号的结果如下:
一个四则运算的表达式经过分割后整个式子以两个栈的形式存在,这个讲一个表达式分割为两个栈的过程叫做"生成双栈”
这是我代码中生成双栈的过程
def calculator(exp)#计算器函数传入表达式(exp)
numlist=list()#数据栈
signlist=list()#符号栈
num=""#数字**胶囊**
for i in exp:#遍历这个表达式
if num !=""#如果当前数据叫胶囊不为空
if i not in "+-*/()":#如果当前字符不是符号则当前字符压入