逆波兰 python
时间: 2023-06-22 16:22:04 浏览: 49
逆波兰表达式是一种不常用的数学表达式写法,它将操作符放到操作数后面,因此也被称为后缀表达式。Python可以通过栈来实现逆波兰表达式的计算。具体步骤如下:
1. 将表达式转换成逆波兰表达式,即将操作符放到操作数后面。
2. 从左到右扫描逆波兰表达式,遇到操作数时将其压入栈中。
3. 遇到操作符时,从栈中弹出两个操作数进行计算,并将结果压入栈中。
4. 重复步骤2和3直至遍历完整个逆波兰表达式,此时栈中只剩下一个元素,即为表达式的计算结果。
以下是一个简单的逆波兰表达式计算示例:
```python
# 定义一个函数用于计算逆波兰表达式
def eval_rpn(tokens):
stack = []
for token in tokens:
if token in ['+', '-', '*', '/']:
b = stack.pop()
a = stack.pop()
if token == '+':
stack.append(a + b)
elif token == '-':
stack.append(a - b)
elif token == '*':
stack.append(a * b)
elif token == '/':
stack.append(int(a / b))
else:
stack.append(int(token))
return stack.pop()
# 测试
tokens = ['2', '1', '+', '3', '*']
print(eval_rpn(tokens)) # 输出 9
```
在上面的示例中,逆波兰表达式为 ['2', '1', '+', '3', '*'],计算结果为 9。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)