python語言實現逆波蘭表示式求值
2022-08-15由 南宮黍天閣 發表于 林業
字尾表示式怎麼求
01
題目
根據逆波蘭表示法,求表示式的值。有效的運算子包括 +, -, *, / 。每個運算物件可以是整數,也可以是另一個逆波蘭表示式。
輸入: [“2”, “1”, “+”, “3”, “*”]
輸出: 9
解釋: ((2 + 1) * 3) = 9
02
原始碼
import sys
from collections import deque
def evalRPN(tokens):
st = deque() # 定義一個運算數棧
i = 0
while i < len(tokens): # 遍歷postexp
opv = tokens[i] # 從逆波蘭表示式(字尾表示式)中取一個元素opv
if opv == “+”: # 判定為“+”號
a = st。pop() # 退棧取數值a
b = st。pop() # 退棧取數值b
c = b+a # 計算c
st。append(c) # 將計算結果進棧
elif opv == “-”: # 判定為“-”號
a = st。pop() # 退棧取數值a
b = st。pop() # 退棧取 數值 b
c = b-a # 計算c
st。append(c) # 將計算結果進 棧
elif opv == “*”: # 判定為“*”號
a = s t。pop() # 退棧取數值a
b = st。pop() # 退 棧取 數 值b
c = b*a # 計算c
elif opv == “/”: # 判定為“/”號
a = st。pop() # 退棧取數值a
b = st。pop( ) # 退棧 取數值b
c = int(b/a) # 計算c
st。append(c) # 將計算結 果進棧
else: # 處理整數
st。append(int(opv)) # 將數值opv進棧
i += 1 # 繼續處理postexp的其他元素
return st[-1] # 棧頂元素即為求值結果
if __name__ == ‘__main__’:
tokens = sys。stdin。readline()。strip()。split(‘ ’)
print(evalRPN(tokens))
03
重要語句提升
①from collections import deque
引入 棧 這一資料結構;
ps:如果執行過程中有什麼問題歡迎評論區諮詢小編!關注後回覆關鍵字:“逆波蘭表示式求值”可以獲得原始碼!