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
相关产品推荐
相关产品推荐

