"""
逆波兰表达式练习
"""
class StackError(Exception):
pass
# 顺序栈类
class SStack:
def __init__(self):
# 空列表 就是栈的存储空间
# 列表的最后一个元素作为栈顶
self._elems = []
# 是否为空
def is_empty(self):
return self._elems == []
# 入栈
def push(self, elem):
self._elems.append(elem)
# 出栈
def pop(self):
if self.is_empty():
raise StackError('Stack is empty')
return self._elems.pop()
# 查看栈顶元素
def top(self):
if self.is_empty():
raise StackError('Stack is empty')
return self._elems[-1]
# 初始化栈
st = SStack()
while True:
a = input("")
s = a.split(' ')
for item in s:
if item in ['+', '-', '*', '/']:
a1 = st.pop()
a2 = st.pop()
st.push(str(eval(a2 + item + a1)))
elif item == 'p':
print(st.top())
else:
st.push(item)
03-20
61
05-11
607
07-20
384