后缀表达式求值 python
时间: 2023-11-12 12:59:53 浏览: 93
后缀表达式求值
5星 · 资源好评率100%
好的,针对您的问题,我可以给出以下 Python 代码实现后缀表达式求值的方法:
```python
def postfix_eval(postfix_expr):
operand_stack = []
token_list = postfix_expr.split()
for token in token_list:
if token.isdigit():
operand_stack.append(int(token))
else:
operand2 = operand_stack.pop()
operand1 = operand_stack.pop()
result = do_math(token, operand1, operand2)
operand_stack.append(result)
return operand_stack.pop()
def do_math(op, op1, op2):
if op == "+":
return op1 + op2
elif op == "-":
return op1 - op2
elif op == "*":
return op1 * op2
else:
return op1 / op2
```
这个函数接受一个后缀表达式字符串作为参数,然后使用一个栈来存储操作数。它遍历表达式中的每个标记,如果标记是一个数字,则将其转换为整数并将其推入操作数栈中。如果标记是一个运算符,则从操作数栈中弹出两个操作数,并使用该运算符对它们进行计算。计算结果再次被推入操作数栈中。最后,当表达式被完全处理后,操作数栈中应该只剩下一个值,即表达式的结果。
下面是一个示例:
```python
print(postfix_eval("7 8 + 3 2 + /"))
# 输出: 1.6666666666666667
```
阅读全文