python逆波兰记法
时间: 2023-10-12 22:05:41 浏览: 112
逆波兰记法(Reverse Polish Notation,RPN)是一种数学表达式的表示方法,其中运算符位于操作数之后。Python中可以使用栈(Stack)来实现逆波兰记法的计算。
下面是一个示例,将中缀表达式转换为逆波兰记法并计算结果:
```python
def calculate_rpn(expression):
stack = []
operators = {'+': lambda x, y: x + y,
'-': lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x / y}
for token in expression.split():
if token in operators:
# 弹出栈顶的两个操作数
operand2 = stack.pop()
operand1 = stack.pop()
# 进行运算并将结果压入栈中
result = operators[token](operand1, operand2)
stack.append(result)
else:
# 将操作数压入栈中
stack.append(float(token))
# 返回栈顶的结果
return stack[0]
# 示例使用
expression = '5 2 + 3 *'
result = calculate_rpn(expression)
print(result) # 输出结果为21.0
```
在上述示例中,逆波兰记法的表达式为`5 2 + 3 *`,先计算`5 + 2`,结果为7,然后将7和3相乘,最终结果为21.0。
阅读全文