# P1449 后缀表达式

## 题目描述

所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。

本题中运算符仅包含 {+-*/}。保证对于 {/}运算除数不为 0。特别地,其中 {/}运算的结果需要**向 0 取整**(即与 C++ `/` 运算的规则一致)。

如{3*(5-2)+7}对应的后缀表达式为:{3.5.2.-*7.+@}。在该式中,`@` 为表达式的结束符号。`.` 为操作数的结束符号。

## 输入格式

输入一行一个字符串 $s$,表示后缀表达式。

## 输出格式

输出一个整数,表示表达式的值。

##输入输出样例#1

###输入#1

```
3.5.2.-*7.+@
```

###输出#1

```
16
```

##输入输出样例#2

###输入#2

```
10.28.30./*7.-@
```

###输出#2

```
-7
```
这道题比较简单可以用栈,也可以不用栈。
代码如下:
import sys
input=sys.stdin.readline
str1=input()
list2=[]
num=''
for item in str1:
    if ord('0')<=ord(item)<=ord('9') or item=='.':
        if item!='.':
            num=num+item
        else:
            list2.append(int (num)) 
            num=''

    elif item=="@":
        break
    
    else: 
        if item=="+":
            list2.append(list2[len(list2)-1]+list2[len(list2)-2])
        elif item=="-":
            list2.append(list2[len(list2)-2]-list2[len(list2)-1])
        elif item=='*':
            list2.append(list2[len(list2)-2]*list2[len(list2)-1])
        elif item=='/':
            list2.append(list2[len(list2)-2]//list2[len(list2)-1])
        del list2[len(list2)-3]
        del list2[len(list2)-2]
print(list2[0])
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务