接受用户输入的四则运算表达式,使用栈进行表达式求值。算术表达式是形如“1 - 2 + 3 * 4”这样的表达式,其中也可以计算浮点数之间的加减乘除。为简单计,不考虑括号。
时间: 2024-03-22 12:41:42 浏览: 94
c语言算术表达式,加减乘除、乘方、括号。依次输出在求值过程中运算数栈内的栈顶数据变化过程,并最终输出表达式的值
5星 · 资源好评率100%
以下是使用栈进行表达式求值的代码:
```python
def evaluate_expression(expression):
# 初始化一个空栈
stack = []
# 将表达式拆分成操作数和运算符的列表
tokens = expression.split()
# 定义一个变量来存储当前运算符
operator = "+"
# 遍历所有的操作数和运算符
for token in tokens:
# 如果当前的token是运算符,则更新operator的值
if token in "+-*/":
operator = token
else:
# 否则,将当前token转换为浮点数
value = float(token)
# 根据当前的运算符,进行相应的计算并将结果压入栈中
if operator == "+":
stack.append(value)
elif operator == "-":
stack.append(-value)
elif operator == "*":
stack.append(stack.pop() * value)
elif operator == "/":
stack.append(stack.pop() / value)
# 返回栈中所有元素的和
return sum(stack)
```
使用示例:
```python
expression = "1 - 2 + 3 * 4"
result = evaluate_expression(expression)
print(result) # 输出 11.0
```
阅读全文