设计一个程序,演示用算符优先法对算术表达式求值的过程
时间: 2023-04-29 11:01:58 浏览: 73
下面是一个使用算符优先法求解算术表达式的程序示例:
```
def eval_expression(expression):
stack = []
for token in expression:
if token in ["+", "-", "*", "/"]:
right = stack.pop()
left = stack.pop()
if token == "+":
stack.append(left + right)
elif token == "-":
stack.append(left - right)
elif token == "*":
stack.append(left * right)
elif token == "/":
stack.append(left / right)
else:
stack.append(int(token))
return stack.pop()
print(eval_expression(["2", "1", "+", "3", "*"])) # 9
print(eval_expression(["4", "13", "5", "/", "+"])) # 6
```
这个程序中,表达式以列表的形式传入,每个元素代表一个数字或算符。算法通过遍历表达式列表,并在遇到算符时弹出栈顶的两个数字,进行计算,再把结果压入栈,最后返回栈顶元素即为表达式的值。