2013-10-26 37 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

相關問題