Python栈的应用:计算器的实现
在计算器中,我们经常使用“栈”这一数据结构。具体实现方式为:每当输入一个数字或符号时,将其加入栈中;当输入一个运算符时,从栈中弹出两个数字进行运算,并将结果加入栈中。最终,栈中剩余的数字即为计算结果。
下面就来看一份简单的Python代码实现计算器:
class Calculator: def __init__(self): self.stack = [] def push(self, item): self.stack.append(item) def pop(self): return self.stack.pop() def is_empty(self): return len(self.stack) == 0 def peek(self): if not self.is_empty(): return self.stack[-1] def size(self): return len(self.stack) def evaluate(self, expression): tokens = expression.split() for token in tokens: if token.isdigit(): self.push(int(token)) else: operand2 = self.pop() operand1 = self.pop() result = self.calculate(token, operand1, operand2) self.push(result) return self.pop() def calculate(self, operator, operand1, operand2): if operator == "+": return operand1 + operand2 elif operator == "-": return operand1 - operand2 elif operator == "*": return operand1 * operand2 elif operator == "/": return operand1 / operand2
上面的代码中,先定义了一个Calcullator
类,其中包括了一个 stack
列表,然后定义了 push
,pop
,is_empty
,peek
,size
这几个栈的基本操作方法。
接着,定义了 evaluate
和 calculate
两个方法,其中 evaluate
方法实现了计算器的核心逻辑,通过循环遍历表达式中的每一个元素,如果该元素是数字,则使用 push
方法将其入栈,否则从栈中弹出两个元素进行计算,得到结果后使用 push
将结果入栈。最终,栈中剩余的元素即为计算结果。
下面是一个例子展示了如何使用该计算器来进行基本的四则运算:
calculator = Calculator() expression = "2 + 3 * 4 - 6 / 2" result = calculator.evaluate(expression) print(f"{expression} = {result}") # 输出: 2 + 3 * 4 - 6 / 2 = 12.0
注意,本代码示例仅支持表达式中包含整数和基本的四则运算符号,对于其他符号如括号等未做处理。
相关文章