0
点赞
收藏
分享

微信扫一扫

python 逆波兰表达式练习


"""
逆波兰表达式练习
"""


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)


举报

相关推荐

0 条评论