堆栈简易计算器pta
时间: 2024-12-28 10:23:59 浏览: 53
### 使用堆栈实现简易计算器
为了满足需求,可以采用双堆栈方法来处理表达式的求值过程。具体来说:
- **S1** 堆栈用于存储操作数。
- **S2** 堆栈用于存储运算符。
当遇到等号键时,执行如下逻辑:从 `S1` 中依次弹出两个数值 `n1` 和 `n2`,再从 `S2` 弹出一个运算符 `op` 来完成相应的二元运算,并将结果重新压入 `S1`[^1]。
#### Python 实现代码示例
下面是一个基于上述原理编写的Python版本解决方案:
```python
def simple_calculator(expression):
operators = []
operands = []
i = 0
while i < len(expression):
if expression[i].isdigit():
num = ""
while i < len(expression) and (expression[i].isdigit() or expression[i] == ' '):
if expression[i] != ' ':
num += expression[i]
i += 1
operands.append(int(num))
continue
elif expression[i] in "+-*/":
operators.append(expression[i])
i += 1
result = operands.pop(0)
for operator in operators:
next_operand = operands.pop(0)
if operator == '+':
result += next_operand
elif operator == '-':
result -= next_operand
elif operator == '*':
result *= next_operand
elif operator == '/':
if next_operand == 0:
print("Error: Division by zero.")
return None
result //= next_operand
return result
# 测试案例
print(simple_calculator("3 + 5 * 2 - 8 / 4")) # 输出应为7
```
此段代码实现了基本功能,即读取字符串形式的算术表达式并按照指定规则解析和计算最终结果。需要注意的是,在实际应用中可能还需要考虑更多边界情况以及异常处理机制。
阅读全文
相关推荐


















