You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python简易计算器如何实现计算历史展示与txt导出功能

简易计算器新增计算历史功能实现

我直接把两种历史记录能力(控制台展示+txt文件存储)都整合到你原有代码里了,只做了最小改动,还补了原代码缺失的除零、非法输入报错处理,每一步逻辑都很容易看懂。

核心改动逻辑

  • 程序启动时初始化一个空列表,临时存储本次运行的所有计算记录
  • 每次完成计算后自动拼接计算表达式和结果,同时存入内存列表、写入本地txt文件
  • 选择退出计算器时,自动在控制台打印全部历史记录
  • txt文件默认保存在代码运行的同目录下,关闭程序后记录不会丢失

修改后完整代码

# 加法运算
def add(x, y):
    return x + y

# 减法运算
def subtract(x, y):
    return x - y

# 乘法运算
def multiply(x, y):
    return x * y

# 除法运算,新增除零判断
def divide(x, y):
    if y == 0:
        return "计算错误:除数不能为0"
    return x / y

# 初始化历史记录内存存储
history = []
# 打开本地历史记录文件,追加模式写入
history_file = open("calc_history.txt", "a", encoding="utf-8")
history_file.write("===== 新的计算会话 =====\n")

print("选择运算类型:")
print("1.加法")
print("2.减法")
print("3.乘法")
print("4.除法")

while True:
    choice = input("输入选项编号(1/2/3/4): ")

    if choice in ('1', '2', '3', '4'):
        # 新增数字输入合法性判断
        try:
            num1 = float(input("输入第一个数字: "))
            num2 = float(input("输入第二个数字: "))
        except ValueError:
            print("输入错误:请输入有效数字")
            continue

        op_symbol = ""
        res = 0
        if choice == '1':
            op_symbol = "+"
            res = add(num1, num2)
        elif choice == '2':
            op_symbol = "-"
            res = subtract(num1, num2)
        elif choice == '3':
            op_symbol = "*"
            res = multiply(num1, num2)
        elif choice == '4':
            op_symbol = "/"
            res = divide(num1, num2)
        
        # 拼接单条计算记录
        record = f"{num1} {op_symbol} {num2} = {res}"
        print(record)
        # 记录存入内存列表
        history.append(record)
        # 记录写入本地txt文件
        history_file.write(record + "\n")
        
        next_calculation = input("是否继续计算?(yes/no): ")
        if next_calculation == "no":
            # 关闭文件释放资源
            history_file.close()
            # 控制台打印全部历史记录
            print("\n===== 本次计算历史记录 =====")
            for item in history:
                print(item)
            break
    
    else:
        print("输入无效,请重新选择")

自定义调整方法

  • 如果不需要存txt文件:删掉所有和history_file相关的代码行即可
  • 如果不需要退出时控制台打印历史:删掉循环break前遍历打印history的代码块即可
  • 如果想每次运行程序清空之前的历史记录,把open("calc_history.txt", "a", encoding="utf-8")里的"a"改成"w"即可

内容的提问来源于stack exchange,提问作者Asus Rog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:15:26