|
发表于 2024-4-11 10:47:36
|
显示全部楼层
好的,下面是修改后的代码,添加了列出所有题库和选择删除题目的功能:import easygui
import random
def collect_questions(file_path):
questions = []
with open(file_path, 'r') as f:
question_type = None
choices = []
for line in f:
line = line.strip()
if line.startswith('@'):
question_type = line.strip('@')
elif line.startswith('#'):
choices.append(line.strip('#'))
elif line.startswith('*'):
answer = line.strip('*')
if question_type == "单选题":
questions.append((question, choices, answer))
question_type = None
choices = []
elif question_type == "多选题":
questions.append((question, choices, answer))
question_type = None
choices = []
elif question_type == "简答题":
questions.append((question, answer))
question_type = None
else:
raise ValueError("未知题目类型:%s" % question_type)
else:
question = line
return questions
def ask_question(question):
if len(question) == 2:
user_answer = easygui.enterbox(question)
if user_answer == question:
easygui.msgbox("回答正确!")
else:
easygui.msgbox("回答错误!正确答案是:%s" % question)
else:
choices = question
answer = question
if len(choices) > 1:
user_answer = easygui.multchoicebox(title=question, choices=choices)
if set(user_answer) == set(answer):
easygui.msgbox("回答正确!")
else:
easygui.msgbox("回答错误!正确答案是:%s" % ','.join(answer))
else:
user_answer = easygui.buttonbox(title=question, choices=choices)
if user_answer == answer:
easygui.msgbox("回答正确!")
else:
easygui.msgbox("回答错误!正确答案是:%s" % answer)
def list_all_questions(questions):
question_list = ""
for i, question in enumerate(questions):
question_list += str(i+1) + ". "
if len(question) == 2:
question_list += question[0] + " (简答题)\n"
else:
question_list += question[0] + " (选择题)\n"
easygui.msgbox("题库中的所有问题如下:\n\n" + question_list)
def delete_question(questions):
question_list = ""
for i, question in enumerate(questions):
question_list += str(i+1) + ". "
if len(question) == 2:
question_list += question[0] + " (简答题)\n"
else:
question_list += question[0] + " (选择题)\n"
choices = ["退出"]
for i in range(1, len(questions)+1):
choices.append(str(i))
choice = easygui.buttonbox("请选择要删除的题目:\n\n" + question_list, choices=choices)
if choice != "退出":
del questions[int(choice)-1]
easygui.msgbox("题目已成功删除!")
def main():
file_path = easygui.fileopenbox("请选择问题文件")
if not file_path:
easygui.msgbox("未选择文件,程序退出")
return
questions = collect_questions(file_path)
while True:
choice = easygui.buttonbox("请选择操作:", choices=["开始测试", "列出所有题库", "删除题目", "退出"])
if choice == "开始测试":
question = random.choice(questions)
ask_question(question)
elif choice == "列出所有题库":
list_all_questions(questions)
elif choice == "删除题目":
delete_question(questions)
elif choice == "退出":
break
if __name__ == '__main__':
main()
在这个版本的程序中,你可以选择开始测试、列出所有题库或删除题目。当选择开始测试时,程序会随机选择一个题目进行测试。当选择列出所有题库时,程序会显示题库中的所有问题。当选择删除题目时,程序会列出所有题目,并允许你选择要删除的题目。希望这次的修改满足你的需求!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|