import os,random,shutil
"""shutil 用于清除已有根文件夹,创建新环境"""
root_folder = os.path.join(os.getcwd(),'test_paper') # 定义存放试卷的根目录
if os.path.exists (root_folder): # 检查是否存在老根目录
shutil.rmtree(root_folder) # 删除老根目录
os.makedirs(root_folder) # 创建新根目录(通过文件夹修改日期验证)
else:
os.makedirs(root_folder) # 检查不存在目录,直接创建
capitals = {'Alabama': 'Montgomery', 'Alaska': 'Juneau', 'Arizona': 'Phoenix',
'Arkansas': 'Little Rock', 'California': 'Sacramento', 'Colorado': 'Denver',
'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallahassee',
'Georgia': 'Atlanta', 'Hawaii': 'Honolulu', 'Idaho': 'Boise', 'Illinois':
'Springfield', 'Indiana': 'Indianapolis', 'Iowa': 'Des Moines', 'Kansas':
'Topeka', 'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge', 'Maine':
'Augusta', 'Maryland': 'Annapolis', 'Massachusetts': 'Boston', 'Michigan':
'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'Jackson', 'Missouri':
'Jefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln', 'Nevada':
'Carson City', 'New Hampshire': 'Concord', 'New Jersey': 'Trenton',
'New Mexico': 'Santa Fe', 'New York': 'Albany', 'North Carolina': 'Raleigh',
'North Dakota': 'Bismarck', 'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City',
'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence',
'South Carolina': 'Columbia', 'South Dakota': 'Pierre', 'Tennessee':
'Nashville', 'Texas': 'Austin', 'Utah': 'Salt Lake City', 'Vermont':
'Montpelier', 'Virginia': 'Richmond', 'Washington': 'Olympia',
'West Virginia': 'Charleston', 'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'}
# 在根目录中创建试卷及对应试卷的答案
# 分别创建35份试卷和答案
m = os.path.join(root_folder,'quiz') # 定义绝对路径 试卷通用名
n = os.path.join(root_folder,'answer') # 定义绝对路径 答案通用名
# 定义 i 且循环35次,每一次新建一份试卷、答案
for i in range(35):
# 在根目录中创建测试试卷和答案文件
test_file = open(m + '{}.txt'.format(i+1),'w')
test_answer = open(n + '{}.txt'.format(i+1),'w')
# 创建试卷标题、姓名、日期、测试课时、两个空行
test_file.write((' State Capitals Quiz (From {}) ').format(i+1).center(65))
test_file.write('\n\nName:\nDate:\n\nPeriod:\n\n')
test_file.write('\n\n')
# 创建答案文件标题、两个空行
test_answer.write((' State Capitals Quiz (Form {})\n ').format(i+1).center(65))
test_answer.write('\n\n')
# 将各州的键存储在 statelist 列表中
statelist = list(capitals.keys())
random.shuffle(statelist) # 将州键所在的列表,重新洗牌——打乱顺序(备用)
# 用len 计算字典键值对和(共50个州),获得循环50次,以便在试卷中创建50个问题
for j in range(len(capitals)):
# 获取正确答案(备用)
correct_answer = capitals[statelist[j]]
# 获取错误答案(先将字典值通过list转换成列表,在把列表中正确的答案的索引找出并删除)
# 得到全错列表,然后在里面随机取3个值组成新的错误列表(包含3个错误答案)
wrong_answers = list(capitals.values())
del wrong_answers[wrong_answers.index(correct_answer)]
wrong_answers = random.sample(wrong_answers,3)
# 用正确答案和错误答案——组合每个问题的4个选项(ABCD)
answer_options = wrong_answers + [correct_answer]
# 将新组合的答案选项列表打乱顺序(备用)
random.shuffle(answer_options)
# 将问题写入试卷
test_file.write('{0}. What is the capital of {1}?\n'.format(j+1,statelist[j]))
# 问题选项循环
for k in range(4):
# 写入ABCD四个字母 以及 字母对应的 答案选项中被打乱的随机表项
test_file.write(' {0}. {1}\n'.format('ABCD'[k],answer_options[k]))
# 写入一个换行符(问题建空行)
test_file.write('\n')
# 将试卷中每题正确答案写入 test_answer 文件对应问题编号中
# format 第一个,对应 50题序号、第二个对应答案选项中正确答案对应的索引,在给出对应选项字母、第三个是对应正确答案
test_answer.write('{0}. {1} {2}\n'.format(j+1,'ABCD'[answer_options.index(correct_answer)],correct_answer))
# 退出循环关闭每完成的一张试卷
test_file.close()
# 退出循环关闭没次完成的答案文件
test_answer.close()
05-06
05-06
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交