如何不重复运行函数获取值?保存已输入测验列表无需重输
解决保存题库时重复输入的问题
你的问题核心在于 saveQuiz() 函数每次执行都会重新调用 createQuiz(),而 createQuiz() 里包含了很多输入语句,所以每次保存都要重新输入内容。要解决这个问题,我们只需要把已经创建好的题库数据存储起来,让 saveQuiz() 直接使用这份现成的数据即可,完全不需要用到OOP,下面给你两种简单的实现方案:
方案一:通过参数传递存储数据(推荐)
这种方式更符合编程规范,避免全局变量带来的潜在问题。我们只需要修改两个函数:
- 让
saveQuiz()接受一个题库参数,不再自己生成新的题库; - 在菜单函数里存储创建好的题库,保存时把这个数据传进去。
修改后的完整代码:
def createQuiz(): quiz = [] for i in range(2): quiz.append(str(i+1) + ') ' + input('Please input Question ' + str(i+1) + ':\n')) for j in range(4): quiz.append(chr(97+j) + '. ' + input('Please input option ' + str(j+1) + ':\n')) quiz.append('Answer: ' + input('Please input Answer(A,B,C,D):\n')) return quiz def saveQuiz(quiz): # 直接使用传入的已有题库数据,不再调用createQuiz() with open('quiz.txt', 'w') as file: for item in quiz: file.write(item) file.write('\n') def menu(): # 用变量存储已创建的题库 created_quiz = None while True: print("=== 题库操作菜单 ===") print("1. 创建新题库") print("2. 保存当前题库") print("3. 退出程序") userinput = int(input("请选择操作序号:")) if userinput == 1: created_quiz = createQuiz() print("题库创建完成!") elif userinput == 2: if created_quiz is not None: saveQuiz(created_quiz) print("题库已成功保存到quiz.txt!") else: print("请先创建题库再执行保存操作!") elif userinput == 3: print("程序已退出") break else: print("输入无效,请重新选择!") # 启动菜单 menu()
方案二:用全局变量存储数据(新手友好)
如果你觉得参数传递有点绕,也可以用全局变量来存储创建好的题库,这样所有函数都能直接访问这份数据:
# 全局变量:存储当前已创建的题库 current_quiz = None def createQuiz(): global current_quiz quiz = [] for i in range(2): quiz.append(str(i+1) + ') ' + input('Please input Question ' + str(i+1) + ':\n')) for j in range(4): quiz.append(chr(97+j) + '. ' + input('Please input option ' + str(j+1) + ':\n')) quiz.append('Answer: ' + input('Please input Answer(A,B,C,D):\n')) # 把创建好的题库存到全局变量里 current_quiz = quiz return quiz def saveQuiz(): global current_quiz if current_quiz is None: print("请先创建题库再保存!") return with open('quiz.txt', 'w') as file: for item in current_quiz: file.write(item) file.write('\n') print("题库保存成功!") def menu(): while True: print("=== 题库操作菜单 ===") print("1. 创建新题库") print("2. 保存当前题库") print("3. 退出程序") userinput = int(input("请选择操作序号:")) if userinput == 1: createQuiz() print("题库创建完成!") elif userinput == 2: saveQuiz() elif userinput == 3: print("程序已退出") break else: print("输入无效,请重新选择!") # 启动菜单 menu()
两种方案都能解决你的问题:当你选择1创建题库后,数据会被存储起来,选择2保存时直接使用这份数据,不会再要求你重新输入。
内容的提问来源于stack exchange,提问作者Vrauldt
相关产品推荐
相关产品推荐

