如何在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