用户想要编写一个程序来自动生成示例试卷。用户需要输入四类问题,每类问题有 6 个,总分 100 分,多选题的数量为 50 个。试卷中的问题、类别、分数和是否为多选题都存储在一个文本文件中。
2、解决方案
- 导入必要的库
import random
- 打开问题文件
with open("questions.txt", "r") as file:
questions = file.readlines()
- 创建一个函数来生成随机问题
def generate_question():
# 从问题列表中随机选择一个问题
question = random.choice(questions)
# 从答案列表中随机选择一个正确答案
correct_answer = random.choice(question.split(",")[1:])
# 将问题和正确答案返回给调用者
return question, correct_answer
- 创建一个函数来生成试卷
def generate_exam(categories, total_marks, mc):
# 创建一个空的试卷
exam = []
# 循环四次,每次生成一个类别的题目
for category in categories:
# 循环六次,每次生成一个问题
for i in range(6):
# 生成一个随机问题
question, correct_answer = generate_question()
# 将问题添加到试卷中
exam.append((question, correct_answer))
# 循环 50 次,每次生成一个多选题
for i in range(mc):
# 生成一个随机问题
question, correct_answer = generate_question()
# 将问题添加到试卷中
exam.append((question, correct_answer))
# 将试卷打乱顺序
random.shuffle(exam)
# 返回试卷
return exam
- 获取用户输入
categories = input("Please enter the four categories that are in the exam: ").split()
total_marks = int(input("Please enter the total marks in the exam: "))
mc = int(input("Please enter the amount of multiple choice questions in the exam: "))
- 生成试卷
exam = generate_exam(categories, total_marks, mc)
- 打印试卷
for question, correct_answer in exam:
print(question)
print("Correct answer:", correct_answer)
- 保存试卷
with open("exam.txt", "w") as file:
for question, correct_answer in exam:
file.write(question + "\n")
file.write("Correct answer: " + correct_answer + "\n\n")
完整的代码如下:
import random
with open("questions.txt", "r") as file:
questions = file.readlines()
def generate_question():
question = random.choice(questions)
correct_answer = random.choice(question.split(",")[1:])
return question, correct_answer
def generate_exam(categories, total_marks, mc):
exam = []
for category in categories:
for i in range(6):
question, correct_answer = generate_question()
exam.append((question, correct_answer))
for i in range(mc):
question, correct_answer = generate_question()
exam.append((question, correct_answer))
random.shuffle(exam)
return exam
categories = input("Please enter the four categories that are in the exam: ").split()
total_marks = int(input("Please enter the total marks in the exam: "))
mc = int(input("Please enter the amount of multiple choice questions in the exam: "))
exam = generate_exam(categories, total_marks, mc)
for question, correct_answer in exam:
print(question)
print("Correct answer:", correct_answer)
with open("exam.txt", "w") as file:
for question, correct_answer in exam:
file.write(question + "\n")
file.write("Correct answer: " + correct_answer + "\n\n")