python生成随机的测验试卷文件
舆情控制假如你是一位地理老师,班上有 35 名学生,你希望进行美国各州首府的一个小测验。不妙的是,班里有几个坏蛋,你无法确信学生不会作弊。你希望随机调整问题的次序,这样每份试卷都是独一无二的,这让任何人都不能从其他人那里抄袭答案。当然,手工完成这件事又费时又无聊。好在,你懂一些 Python。
下面是程序所做的事:
· 创建 35 份不同的测验试卷。
· 为每份试卷创建 50 个多重选择题,次序随机。
· 为每个问题提供一个正确答案和 3 个随机的错误答案,次序随机。
· 将测验试卷写到 35 个文本文件中。
· 将答案写到 35 个文本文件中。
这意味着代码需要做下面的事:
· 将州和它们的首府保存在一个字典中。
· 针对测验文本文件和答案文本文件,调用 open()、write()和 clo()。
· 利用 random.shuffle()随机调整问题和多重选项的次序。
第 1 步:将测验数据保存在一个字典中
第一步是创建一个脚本框架,并填入测验数据。创建一个名为 randomQuizGenerator.py 的文件,让它看起来像这样:
1.#! python3
2.# randomQuizGenerator.py - Creates quizzes with questions and answers in
耳朵的图片
3.# random order, along with the answer key.
4.
5.藏族特色import random
6.
7.新闻作文500字# The quiz data. Keys are states and values are their capitals.
8.capitals = {'Alabama': 'Montgomery', 'Alaska': 'Juneau', 'Arizona': 'Phoenix',
9.'Arkansas': 'Little Rock', 'California': 'Sacramento', 'Colorado': 'Denver',
娃娃脸
10.'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallaha',
11.'Georgia': 'Atlanta', 'Hawaii': 'Honolulu', 'Idaho': 'Boi', 'Illinois':
12.'Springfield', 'Indiana': 'Indianapolis', 'Iowa': 'Des Moines', 'Kansas':
13.'Topeka', 'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge', 'Maine':
14.'Augusta', 'Maryland': 'Annapolis', 'Massachutts': 'Boston', 'Michigan':
15.'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'Jackson', 'Missouri':
16.'Jefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln', 'Nevada':
17.'Carson City', 'New Hampshire': 'Concord', 'New Jery': 'Trenton', 'New
18.Mexico': 'Santa Fe', 'New York': 'Albany', 'North Carolina': 'Raleigh',
19.'North Dakota': 'Bismarck', 'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City',
20.'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence',
21.'South Carolina': 'Columbia', 'South Dakota': 'Pierre', 'Tenne':
22.'Nashville', 'Texas': 'Austin', 'Utah': 'Salt Lake City', 'Vermont':
23.'Montpelier', 'Virginia': 'Richmond', 'Washington': 'Olympia', 'West
24.Virginia': 'Charleston', 'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'}
25.
26.# Generate 35 quiz files.
27.for quizNum in range(35):
28.# TODO: Create the quiz and answer key files.
29.
30.# TODO: Write out the header for the quiz.
31.
32.# TODO: Shuffle the order of the states.
33.
初一英语教学反思34.# TODO: Loop through all 50 states, making a question for each.
艾青作品因为这个程序将随机安排问题和答案的次序,所以需要导入 random 模块,以便利用其中的函数。capitals 变量含一个字典,以美国州名作为键,以州首府作为值。因为你希望创建 35 份测验试卷,所以实际生成测验试卷和答案文件的代码(暂时用 TODO 注释标注)会放在一个 for 循环中,循环 35 次(这个数字可以改变,生成任何数目的测验试卷文件)。
第 2 步:创建测验文件,并打乱问题的次序
现在是时候填入那些 TODO 了。
循环中的代码将重复执行 35 次(每次生成一份测验试卷),所以在循环中,你只需要考虑一份测验试卷。首先你要创建一个实际的测验试卷文件,它需要有唯一的文件名,并且有某种标准的标题部分,留出位置,让学生填写姓名、日期和班级。然后需要得到随机排列的州的列表,稍后将用它来创建测验试卷的问题和答案。在 randomQuizGenerator.py 中添加以下代码行:
1.#! python3
2.# randomQuizGenerator.py - Creates quizzes with questions and answers in
3.# random order, along with the answer key.
4.
5.--snip--
6.
7.# Generate 35 quiz files.
8.for quizNum in range(35):
9.# Create the quiz and answer key files.
10.quizFile = open('' % (quizNum + 1), 'w')
11.answerKeyFile = open('captalsquiz_' % (quizNum + 1), 'w')
布林线怎么看12.
13.# Write out the header for the quiz.
14.quizFile.write('Name:\n\nDate:\n\nPeriod:\n\n')
15.quizFile.write((' ' * 20) + 'State Capitals Quiz (Form %s)' % (quizNum + 1))
16.quizFile.write('\n\n')
17.
18.# Shuffle the order of the states.
19.states = list(capitals.keys())
20.random.shuffle(states)
21.
22.# TODO: Loop through all 50 states, making a question for each.
测验试卷的文件名将是capitalsquiz<N>.txt,其中<N>是该测验试卷的唯一编号,来自于 quizNum,即 for 循环的计数器。针对 capitalsquiz<N>.txt 的答案将保存在一个文本文件中,名为 capitalsquiz_answers<N>.txt。每次执行循环,''和'capitalsquiz_'中的占位符%s 都将被(quizNum + 1)取代,所以第一个测验试卷和答案将是 和 。在quizFile和answerKeyFile的 open()函数调用将创建这些文件,以'w'作为第二个参数,以
写模式打开它们。 write()语句创建了测验标题,让学生填写。最后,利用 random.shuffle()函数,创建了美国州名的随机列表。该函数重新随机排列传递给它的列表中的值。