-4

如何在 Python 3.0 中使用后缀符号拆分十六进制字符串?

示例:1 1 + 5 * 7 +

答案应该是 (1+1)*5+7=17。

每个数字后面都有一个空格。所以我们可以用那个空格分割数字。

谢谢你。

4

1 回答 1

2

这将带您走很长一段路。还有足够的东西让你弄清楚——比如如何处理十六进制数字。

from string import digits
import operator

def postfix(seq):
    """
    >>> postfix("11+5*7+")
    17
    >>> postfix("62/")
    3
    """
    stack = []
    ops = {
        '+': operator.__add__,
        '-': operator.__sub__,
        '*': operator.__mul__,
        '/': operator.__div__,
    }
    for c in seq:
        if c in digits:
            stack.append(int(c))
        else:
            right = stack.pop()
            left = stack.pop()
            op = ops[c]
            stack.append(op(left, right))
    return stack[-1]

if __name__ == '__main__':
    import doctest
    doctest.testmod()
于 2013-10-26T01:53:19.607 回答