2013-10-26 36 views
-3

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

实施例: 1 1 + 5×7 +

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

每个数字之后都有一个空格。所以我们可以按照这个空格分开数字。

谢谢。

+0

我在努力解决。 – KillerCode

+0

这是一个“十六进制字符串”吗? – kindall

+0

我的意思是有数字在十六进制 – KillerCode

回答

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() 
+0

我试图执行此操作,但我没有得到答案。因为我是python的新手请解释一下 – KillerCode

+0

尝试:'打印后缀(“11 + 5 * 7 +”)'和'打印后缀(“62 /”)'。 'postfix'中的字符串是一系列doctests,他们说:“如果postfix工作正常,它会在给定这个输入的情况下产生这个输出。”在这种情况下,承诺是:“如果你通过我'11 + 5 * 7 +',我会给你17”,“如果你通过我'62我会给你3'''。得到它?这就像开发人员认为它会如何工作的文档一样。它也提出了一个问题:你认为“26 /”应该产生3还是应该“62 /”产生3?当你开发更多的测试用例时,你将它们放到标题中,然后测试你的代码。 – hughdbrown

相关问题