如何在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()
我试图执行此操作,但我没有得到答案。因为我是python的新手请解释一下 – KillerCode
尝试:'打印后缀(“11 + 5 * 7 +”)'和'打印后缀(“62 /”)'。 'postfix'中的字符串是一系列doctests,他们说:“如果postfix工作正常,它会在给定这个输入的情况下产生这个输出。”在这种情况下,承诺是:“如果你通过我'11 + 5 * 7 +',我会给你17”,“如果你通过我'62我会给你3'''。得到它?这就像开发人员认为它会如何工作的文档一样。它也提出了一个问题:你认为“26 /”应该产生3还是应该“62 /”产生3?当你开发更多的测试用例时,你将它们放到标题中,然后测试你的代码。 – hughdbrown
我在努力解决。 – KillerCode
这是一个“十六进制字符串”吗? – kindall
我的意思是有数字在十六进制 – KillerCode