后缀表达式的评估
如何计算后缀表达式的值:我尝试了:
import operator
operator = {
'+': operator.add, '-': operator.sub,
'*': operator.mul, '/': operator.div, '%': operator.mod,
'**': operator.pow, '//': operator.floordiv,
}
l = []
exp = "11+2*"
for i in exp:
if i in operator:
a = operator[i]
x = l[0]
y = l[1]
l[-2:] = [a(*l[-2:])]
print l
else:
l.append(i)
print l
我该怎么做呢?
2 个回答
0
一些提示:
你需要一个更好的解析器,逐个字符地处理是不够的(除非你只想处理单个数字)。为了简化一点,你可以要求数字和运算符之间用空格分开,然后使用
str.split
来处理:elems = "11 2 3 + *".split()
在把数字放入栈之前,你需要先把它们转换成整数。
栈的操作看起来也有点奇怪。把它写成
l.append(a(l.pop(), l.pop())
会让它更清晰。
0
确保在把字符添加到栈之前,先用Python把它们转换成整数:
l.append(int(i))