数据结构论坛

注册

 

发新话题 回复该主题

python语言实现逆波兰表达式求值 [复制链接]

1#

01题目

根据逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。

输入:[“2”,“1”,“+”,“3”,“*”]

输出:9

解释(2+1)*3)=9

02源代码

importsys

fromcollectionsimportdeque

defevalRPN(tokens)/p>

st=deque()#定义一个运算数栈

i=0

whileilen(tokens)遍历postexp

opv=tokens#从逆波兰表达式(后缀表达式)中取一个元素opv

ifopv=="+"判定为"+"号

a=st.pop()#退栈取数值a

b=st.pop()#退栈取数值b

c=b+a#计算c

st.append(c)#将计算结果进栈

elifopv=="-"判定为"-"号

a=st.pop()#退栈取数值a

b=st.pop()#退栈取数值b

c=b-a#计算c

st.append(c)#将计算结果进栈

elifopv=="*"判定为"*"号

a=st.pop()#退栈取数值a

b=st.pop()#退栈取数值b

c=b*a#计算c

elifopv=="/"判定为"/"号

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的其他元素

returnst[-1]#栈顶元素即为求值结果

if__name__==__main__/p>

tokens=sys.stdin.readline().strip().split()

print(evalRPN(tokens))

03重要语句提升

①fromcollectionsimportdeque

引入栈这一数据结构;

ps:如果运行过程中有什么问题欢迎评论区咨询小编!

分享 转发
TOP
发新话题 回复该主题