0

如何计算后固定符号的值:我尝试过:

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

这个怎么做?

4

2 回答 2

0

确保在将字符添加到堆栈之前让 Python 将它们解析为整数:

l.append(int(i))
于 2013-03-20T06:27:53.327 回答
0

一些提示:

  • 您需要一个更好的解析器,仅逐个字符地迭代是不够的(除非您只想拥有一位数)。为了使它更简单一点,您可以要求数字和运算符分别由空格分隔并使用str.split

    elems = "11 2 3 + *".split()
    
  • 您需要将数字转换为整数,然后再将它们推入堆栈

堆栈操作看起来也有点奇怪。将其作为

l.append(a(l.pop(), l.pop())

使它更明确。

于 2013-03-20T06:43:03.310 回答