如何在 Python 3.0 中使用后缀符号拆分十六进制字符串?
示例:1 1 + 5 * 7 +
答案应该是 (1+1)*5+7=17。
每个数字后面都有一个空格。所以我们可以用那个空格分割数字。
谢谢你。
如何在 Python 3.0 中使用后缀符号拆分十六进制字符串?
示例:1 1 + 5 * 7 +
答案应该是 (1+1)*5+7=17。
每个数字后面都有一个空格。所以我们可以用那个空格分割数字。
谢谢你。
这将带您走很长一段路。还有足够的东西让你弄清楚——比如如何处理十六进制数字。
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()