欢迎访问宙启技术站
智能推送

使用Python实现一个简单的计算器

发布时间:2023-12-04 12:04:53

实现一个简单的计算器主要包括以下几个步骤:

1. 接收用户输入的表达式

2. 解析表达式,并处理其中的运算符和操作数

3. 执行计算并返回结果

下面是一个简单的计算器的实现代码:

def calculator(expression):
    # 移除表达式中的空格
    expression = expression.replace(" ", "")
    
    # 定义运算符的优先级
    operators = {
        '+': 1,
        '-': 1,
        '*': 2,
        '/': 2,
        '^': 3
    }
    
    # 定义操作符栈和操作数栈
    operator_stack = []
    operand_stack = []
    
    # 定义辅助函数用于计算两个操作数的结果
    def evaluate(operator, operand1, operand2):
        if operator == '+':
            return operand1 + operand2
        elif operator == '-':
            return operand1 - operand2
        elif operator == '*':
            return operand1 * operand2
        elif operator == '/':
            return operand1 / operand2
        elif operator == '^':
            return operand1 ** operand2
    
    # 解析表达式并进行计算
    i = 0
    while i < len(expression):
        if expression[i].isdigit():
            # 提取操作数
            operand = ""
            while i < len(expression) and expression[i].isdigit():
                operand += expression[i]
                i += 1
            operand_stack.append(float(operand))
        elif expression[i] in operators:
            # 提取操作符
            while operator_stack and operators[operator_stack[-1]] >= operators[expression[i]]:
                operand2 = operand_stack.pop()
                operand1 = operand_stack.pop()
                operator = operator_stack.pop()
                result = evaluate(operator, operand1, operand2)
                operand_stack.append(result)
            operator_stack.append(expression[i])
            i += 1
        else:
            i += 1
    
    # 执行未计算完成的操作
    while operator_stack:
        operand2 = operand_stack.pop()
        operand1 = operand_stack.pop()
        operator = operator_stack.pop()
        result = evaluate(operator, operand1, operand2)
        operand_stack.append(result)
    
    # 返回结果
    return operand_stack[0]

# 使用例子
expression = "3 + 4 * 2 - 1"
result = calculator(expression)
print("结果:", result)

以上就是一个简单的计算器的实现。对于输入的表达式,它可以处理整数和浮点数的运算,支持加法、减法、乘法、除法和指数运算,并且按照乘法和除法的优先级进行计算。

在使用例子中,输入的表达式为"3 + 4 * 2 - 1",运算结果为10.0。