在线计算器实现与历史记录优化


正文:

一、问题背景及核心功能

在线计算器的核心功能是支持基本运算(加减乘除)并记录计算历史。实现该功能需要以下关键能力:
1. 运算逻辑处理:实现加减乘除运算,并处理除零错误
2. 历史记录存储:将计算过程记录到列表中
3. 异常处理机制:防止除零错误和无效操作符
4. 可运行性验证:采用Python实现,不需要依赖外部框架

二、算法思路分析

  1. 输入处理逻辑
    • 输入格式化为三个数字与运算符号
    • 遇到”exit”或num1/num2为exit时终止计算
    • 使用map函数将输入转换为字符串形式
  2. 运算逻辑实现
    • 使用if-else结构分别处理加减乘除
    • 检查除零错误(除以零时使用try-except块)
    • 将运算结果与历史记录保存
  3. 数据结构管理
    • 使用列表存储历史记录
    • 每次运算后打印结果和历史记录
  4. 异常处理优化
    • 采用try-except块处理除零错误
    • 对无效操作符进行错误提示

三、代码实现

import time

def calculator():
    history = []
    while True:
        try:
            num1, num2, op = map(str, input("Enter operation: ").split())
            if num1 == 'exit' or num2 == 'exit':
                break
            history.append(f"{num1} {num2} {op}")
            op = op[0]  # 保留运算符
            if op == '+':
                result = int(num1) + int(num2)
            elif op == '-':
                result = int(num1) - int(num2)
            elif op == '*':
                result = int(num1) * int(num2)
            elif op == '/':
                if num2 == '0':
                    raise ZeroDivisionError
                result = int(num1) / int(num2)
            else:
                raise ValueError("Invalid operation: %s" % op)
            print(f"Result: {result}")
            print(f"History: {history}")
            time.sleep(1)  # 防止超时
        except ZeroDivisionError:
            print("Error: Division by zero.")
        except ValueError:
            print("Error: Invalid operation.")
        except Exception as e:
            print(f"Error: {e}")

calculator()

四、总结与价值

本代码实现展示了:
数据结构的运用:通过列表存储历史记录
算法实现:通过if-else结构处理运算逻辑
异常处理机制:覆盖除零错误和无效操作符
可运行性验证:采用Python实现,无需依赖外部框架

该实现可以在3天内完成编写并验证,具有良好的学习价值。代码简洁易懂,能够满足在线计算器的基本功能要求。