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

如何不重复运行函数获取值?保存已输入测验列表无需重输

解决保存题库时重复输入的问题

你的问题核心在于 saveQuiz() 函数每次执行都会重新调用 createQuiz(),而 createQuiz() 里包含了很多输入语句,所以每次保存都要重新输入内容。要解决这个问题,我们只需要把已经创建好的题库数据存储起来,让 saveQuiz() 直接使用这份现成的数据即可,完全不需要用到OOP,下面给你两种简单的实现方案:

方案一:通过参数传递存储数据(推荐)

这种方式更符合编程规范,避免全局变量带来的潜在问题。我们只需要修改两个函数:

  1. 让 saveQuiz() 接受一个题库参数,不再自己生成新的题库;
  2. 在菜单函数里存储创建好的题库,保存时把这个数据传进去。

修改后的完整代码:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:51:51