# python 08-1 项目:生成随机的测试试卷文件
# 来自:《Python编程快速上手》
# 目标:
# 1.创建10份不同的测试试卷
# 2.为没分试卷创建15个多重选择题,次序随机
# 3.为每个问题提供一个正确答案和三个随机的错误答案,次序随机。
# 4.将测试试卷写到10个文本文件中
# 5.将答案写到10个文本文件中
# 要做的事:
# 1.将州和它们的首付保存在一个字典中。
# 2.针对测验文本文件和答案文本文件,调用open()、write()和close()。
# 3.利用random.shuffle()随机调整问题和多重选项的次序。
# 1.将测验数据保存在一个字典中
import random
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'}
# 创建测验文件 打乱问题的次序
for quiznum in range(10):
quizFile = open('/Users/wang/Desktop/Test/capitalsquiz%s.txt' % (quiznum+1), 'w')
answerKeyFile = open('/Users/wang/Desktop/Test/capitalsquiz_answets%s.txt' % (quiznum+1),'w')
quizFile.write('Name:\n\nData:\n\nPeriod:\n\n')
quizFile.write((' ' * 20) + 'State Capitals quiz (form %s)' % (quiznum + 1))
quizFile.write('\n\n')
states = list(capitals.keys())
random.shuffle(states)
# 创建答案选项
for questionNum in range(15):
correctAnswer = capitals[states[questionNum]]
wrongAnswers = list(capitals.values())
del wrongAnswers[wrongAnswers.index(correctAnswer)]
wrongAnswers = random.sample(wrongAnswers, 3)
answerOptions = wrongAnswers + [correctAnswer]
random.shuffle(answerOptions)
# 将内容写入测试试卷和答案文件
quizFile.write('%s. What is the capital of %s?\n' %(questionNum + 1, states[questionNum]))
for i in range(4):
quizFile.write(' %s.%s\n' %('ABCD'[i], answerOptions[i]))
quizFile.write('\n')
answerKeyFile.write(' %s.%s\n' %(questionNum+1, 'ABCD'[answerOptions.index(correctAnswer)]))
quizFile.close()
answerKeyFile.close()