如何修改Python加法程序,支持用户选择文件保存目录并满足需求?
解决方案
针对你的需求,我们对现有代码做针对性调整,实现可持续输入、追加保存结果、3次无效输入限制以及灵活的保存位置选择功能,修改后的完整代码如下:
import os import tkinter as tk from tkinter import filedialog, messagebox def ensure_directory_exists(directory): # 确保目标目录存在,不存在则自动创建 if not os.path.exists(directory): os.makedirs(directory) def save_result(equation, save_path): # 以追加模式写入运算结果 with open(save_path, 'a', encoding='utf-8') as file: file.write(equation + '\n') def add_numbers(): # 初始化tkinter窗口并隐藏 root = tk.Tk() root.withdraw() # 让用户选择保存路径模式 choice = messagebox.askyesno("保存位置选择", "是否自定义保存位置?\n选择'否'将默认保存到当前目录下的data/results.txt") if choice: save_filename = "results.txt" folder = filedialog.askdirectory(title="选择保存文件夹") if not folder: # 用户取消选择 print("未选择保存位置,程序退出") return save_path = os.path.join(folder, save_filename) else: data_dir = "data" ensure_directory_exists(data_dir) save_path = os.path.join(data_dir, "results.txt") invalid_attempts = 0 max_invalid_attempts = 3 # 最多3次无效输入限制 while True: try: # 询问用户是否继续运算 continue_input = input("\n是否继续进行加法运算?(y/n): ").strip().lower() if continue_input != 'y': print(f"程序已退出,所有结果已保存到 {save_path}") break num1 = float(input("请输入第一个数字: ")) num2 = float(input("请输入第二个数字: ")) result = num1 + num2 equation = f"{num1} + {num2} = {result}" print(equation) save_result(equation, save_path) invalid_attempts = 0 # 有效输入后重置无效尝试次数 except ValueError: invalid_attempts += 1 remaining = max_invalid_attempts - invalid_attempts print(f"无效输入,请输入有效的数字。剩余无效尝试次数: {remaining}") if invalid_attempts >= max_invalid_attempts: print(f"已达到{max_invalid_attempts}次无效输入,程序退出") print(f"所有结果已保存到 {save_path}") break if __name__ == "__main__": add_numbers()
关键修改说明
- 可持续输入控制:通过
while True循环配合用户输入的y/n,实现用户自主选择退出时机的需求 - 追加保存机制:将文件打开模式从覆盖(
'w')改为追加('a'),确保每次运算结果都能保留在文件中 - 自动目录创建:新增
ensure_directory_exists函数,当选择默认保存路径时,自动创建data目录避免路径错误 - 双模式保存选择:通过弹窗让用户自主选择自定义保存位置或默认路径,兼顾你的初始需求和新功能要求
- 无效输入限制:设置最多3次无效输入的阈值,达到后自动退出,满足“支持测试3次输入”的要求
内容的提问来源于stack exchange,提问作者user12860710
相关产品推荐
相关产品推荐

