后缀表达式的评估

0 投票
2 回答
543 浏览
提问于 2025-04-17 19:43

如何计算后缀表达式的值:我尝试了:

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))

撰写回答