python实践项目八:生成随机试卷文件
Posted heyangblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python实践项目八:生成随机试卷文件相关的知识,希望对你有一定的参考价值。
描述:匹配美国50个州的首府。
下面是程序需要完成的任务:
• 创建35 份不同的测验试卷。
• 为每份试卷创建50 个多重选择题,次序随机。
• 为每个问题提供一个正确答案和3 个随机的错误答案,次序随机。
• 将测验试卷写到35 个文本文件中。
• 将答案写到35 个文本文件中。
这意味着代码需要做下面的事:
• 将州和它们的首府保存在一个字典中。
• 针对测验文本文件和答案文本文件,调用open()、 write()和close()。
• 利用random.shuffle()随机调整问题和多重选项的次序。
代码:
1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 4 import random,os 5 #设置试卷、答案存放路径 6 testPath=‘F:\\\\Test‘ 7 answerPath=‘F:\\\\Answer‘ 8 #判断路径是否存在,若不存在则创建一个 9 if not os.path.exists(testPath): 10 os.mkdir(testPath) 11 if not os.path.exists(answerPath): 12 os.mkdir(answerPath) 13 #将测试数据保存在一个字典中,key为州名,value为首府名 14 capitals = ‘Alabama‘: ‘Montgomery‘, ‘Alaska‘: ‘quesNumuneau‘, ‘Arizona‘: ‘Phoenix‘, 15 ‘Arkansas‘: ‘Little Rock‘, ‘California‘: ‘Sacramento‘, ‘Colorado‘: ‘Denver‘, 16 ‘Connecticut‘: ‘Hartford‘, ‘Delaware‘: ‘Dover‘, ‘Florida‘: ‘Tallahassee‘, 17 ‘Georgia‘: ‘Atlanta‘, ‘Hawaii‘: ‘Honolulu‘, ‘Idaho‘: ‘Boise‘, ‘Illinois‘: 18 ‘Springfield‘, ‘Indiana‘: ‘Indianapolis‘, ‘Iowa‘: ‘Des Moines‘, ‘Kansas‘: 19 ‘Topeka‘, ‘Kentucky‘: ‘Frankfort‘, ‘Louisiana‘: ‘Baton Rouge‘, ‘Maine‘: 20 ‘Augusta‘, ‘Maryland‘: ‘Annapolis‘, ‘Massachusetts‘: ‘Boston‘, ‘Michigan‘: 21 ‘Lansing‘, ‘Minnesota‘: ‘Saint Paul‘, ‘Mississippi‘: ‘quesNumackson‘, ‘Missouri‘: 22 ‘quesNumefferson City‘, ‘Montana‘: ‘Helena‘, ‘Nebraska‘: ‘Lincoln‘, ‘Nevada‘: 23 ‘Carson City‘, ‘New Hampshire‘: ‘Concord‘, ‘New quesNumersey‘: ‘Trenton‘, ‘NewMexico‘: 24 ‘Santa Fe‘, ‘New York‘: ‘Albany‘, ‘North Carolina‘: ‘Raleigh‘, 25 ‘North Dakota‘: ‘Bismarck‘, ‘Ohio‘: ‘Columbus‘, ‘Oklahoma‘: ‘Oklahoma City‘, 26 ‘Oregon‘: ‘Salem‘, ‘Pennsylvania‘: ‘Harrisburg‘, ‘Rhode Island‘: ‘Providence‘, 27 ‘South Carolina‘: ‘Columbia‘, ‘South Dakota‘: ‘Pierre‘, ‘Tennessee‘: 28 ‘Nashville‘, ‘Texas‘: ‘Austin‘, ‘Utah‘: ‘Salt Lake City‘, ‘Vermont‘: 29 ‘Montpelier‘, ‘Virginia‘: ‘Richmond‘, ‘Washington‘: ‘Olympia‘, ‘WestVirginia‘: 30 ‘Charleston‘, ‘Wisconsin‘: ‘Madison‘, ‘Wyoming‘: ‘Cheyenne‘ 31 #循环35次,创建35套试卷 32 for fileNum in range(35): 33 #os.path.quesNumoin:将路径和文件名连接起来,相应的文件位置即可确定 34 quesFile=open(os.path.join(testPath,‘question%s.txt‘ %(fileNum+1)),‘w‘) 35 answerFile=open(os.path.join(answerPath,‘answer%s.txt‘ %(fileNum+1)),‘w‘) 36 #写试卷的抬头信息 37 quesFile.write(‘Name:\\n\\nDate:\\n\\nPeriod:\\n\\n‘) 38 quesFile.write((‘ ‘*20)+‘state Capitals Quiz(Form %s)‘ %(fileNum+1)) 39 quesFile.write(‘\\n\\n‘) 40 #将州名写入一个列表 41 states=list(capitals.keys()) 42 #使用random.shuffle()函数将列表内容随机排序 43 random.shuffle(states) 44 #循环创建50个题目 45 for quesNum in range(50): 46 #获得正确答案 47 correctAnswer=capitals[states[quesNum]] 48 #将所有答案写入一个列表 49 wrongAnswers=list(capitals.values()) 50 #删除列表中正确的答案,得到全是错误答案的列表 51 del wrongAnswers[wrongAnswers.index(correctAnswer)] 52 #从错误答案列表中随机获取3个答案 53 wrongAnswers=random.sample(wrongAnswers,3) 54 #将正常答案和3个错误答案放入一个选项列表 55 answerOptions=wrongAnswers+[correctAnswer] 56 #将选项列表随机排序 57 random.shuffle(answerOptions) 58 59 #将题目写入quesFile 60 quesFile.write(‘\\n%s.What is the capital of %s?\\n‘ %(quesNum+1,states[quesNum])) 61 #将选项写入quesFile 62 for k in range(4): 63 quesFile.write(‘\\n%s.%s‘ %(‘ABCD‘[k],answerOptions[k])) 64 quesFile.write(‘\\n‘) 65 66 #将答案写入answerFile 67 answerFile.write(‘%2s.%s\\n‘ %(quesNum+1,‘ABCD‘[answerOptions.index(correctAnswer)])) 68 quesFile.close() 69 answerFile.close()
运行结果:
以上是关于python实践项目八:生成随机试卷文件的主要内容,如果未能解决你的问题,请参考以下文章
开发实践教程1:试卷生成系统6.7 试卷生成(FormTestPaper)
每日练习五:《Python编程快速上手+让繁琐工作自动化》第八章项目