使用后缀表示法拆分十六进制字符串

时间:2013-10-26 01:35:13

标签: python python-3.x postfix-notation

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

实施例: 1 1 + 5 * 7 +

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

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

谢谢。

1 个答案:

答案 0 :(得分: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()