数据结构论坛

首页 » 分类 » 常识 » python语言实现逆波兰表达式求值
TUhjnbcbe - 2023/6/30 20:13:00

01题目

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

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

输出:9

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

02源代码

importsys

fromcollectionsimportdeque

defevalRPN(tokens):

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__:

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

print(evalRPN(tokens))

03重要语句提升

①fromcollectionsimportdeque

引入栈这一数据结构;

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

1
查看完整版本: python语言实现逆波兰表达式求值