如何计算修复后符号的值: 我试过:
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
怎么做?
答案 0 :(得分:0)
确保让Python在将字符添加到堆栈之前将其解析为整数:
l.append(int(i))
答案 1 :(得分:0)
一些提示:
您需要一个更好的解析器,逐个字符迭代是不够的(除非您只想拥有单个数字)。为了使它更简单,您可以要求数字和运算符分别用空格分隔并使用str.split
:
elems = "11 2 3 + *".split()
在将数字推入堆栈之前,您需要将数字转换为整数
堆栈操作看起来有点奇怪。有它
l.append(a(l.pop(), l.pop())
使其更明确。