首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]轻松入门Python栈计算器:实现加减乘除,一步步学会高效算法

发布于 2025-12-02 00:30:09
0
1424

引言在编程的世界里,栈是一种非常基础且重要的数据结构。它遵循后进先出(LIFO)的原则,广泛应用于各种算法实现中。本文将带你通过Python语言,一步步实现一个能够进行加减乘除运算的简单计算器,通过这...

引言

在编程的世界里,栈是一种非常基础且重要的数据结构。它遵循后进先出(LIFO)的原则,广泛应用于各种算法实现中。本文将带你通过Python语言,一步步实现一个能够进行加减乘除运算的简单计算器,通过这个过程,你将学会如何使用栈来处理数学表达式。

准备工作

在开始之前,请确保你的计算机上已安装Python环境。如果没有,可以从Python官网下载并安装。

栈的基本操作

首先,我们需要定义栈的基本操作,包括:

  • 入栈(push)
  • 出栈(pop)
  • 查看栈顶元素(peek)
  • 判断栈是否为空(is_empty)

下面是栈的基本操作实现:

class Stack: def __init__(self): self.items = [] def push(self, item): self.items.append(item) def pop(self): if not self.is_empty(): return self.items.pop() return None def peek(self): if not self.is_empty(): return self.items[-1] return None def is_empty(self): return len(self.items) == 0

计算器实现

接下来,我们将使用栈来实现计算器。主要步骤包括:

  1. 输入表达式
  2. 将表达式中的数字和运算符分开
  3. 使用栈处理运算符
  4. 输出最终结果

下面是计算器的实现:

def calculate(expression): def apply_operator(operators, values): operator = operators.pop() right = values.pop() left = values.pop() if operator == '+': values.append(left + right) elif operator == '-': values.append(left - right) elif operator == '*': values.append(left * right) elif operator == '/': values.append(left / right) def precedence(op): if op == '+' or op == '-': return 1 if op == '*' or op == '/': return 2 return 0 operators = Stack() values = Stack() for token in expression: if token.isdigit(): values.push(int(token)) elif token == '(': operators.push(token) elif token == ')': while operators.peek() != '(': apply_operator(operators, values) operators.pop() # Remove '(' from stack else: while (not operators.is_empty() and precedence(operators.peek()) >= precedence(token)): apply_operator(operators, values) operators.push(token) while not operators.is_empty(): apply_operator(operators, values) return values.pop()

测试计算器

最后,我们可以测试我们的计算器:

expression = "(3 + 5) * 8 / (2 - 2)"
result = calculate(expression)
print(f"The result of '{expression}' is {result}")

运行上述代码,你应该会得到结果 36.0

总结

通过本文的学习,你不仅实现了一个简单的计算器,还学会了如何使用栈来处理数学表达式。这是一个很好的编程实践,可以帮助你更好地理解数据结构和算法。随着你对Python和编程的深入,你可以尝试添加更多的功能,比如括号处理、错误处理等。

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流