Python栈的应用:计算器的实现

2023-04-10 00:00:00 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 列表,然后定义了 pushpopis_emptypeeksize 这几个栈的基本操作方法。

接着,定义了 evaluatecalculate 两个方法,其中 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

注意,本代码示例仅支持表达式中包含整数和基本的四则运算符号,对于其他符号如括号等未做处理。

相关文章