如何在Python 3.0中使用后缀表示法拆分十六进制字符串?
实施例: 1 1 + 5 * 7 +
答案应该是(1 + 1)* 5 + 7 = 17.
每个数字后面都有一个空格。所以我们可以用那个空格分割数字。
谢谢。
答案 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()