#项目:生成随机的测验试卷文件 import random #资料库 capitals = {'北京市':'京','上海市':'沪','天津市':'津','重庆市':'渝','河北省':'冀','山西省':'晋','辽宁省':'辽','黑龙江省':'黑','吉林省':'吉','江苏省':'苏','浙江省':'浙','安徽省':'皖','福建省':'闽','江西省':'赣','山东省':'鲁','河南省':'豫','湖北省':'鄂','湖南省':'湘','广东省':'粤','海南省':'琼','四川省':'川','贵州省':'黔','云南省':'滇','陕西省':'陕','甘肃省':'甘'} #测试人数 for quizNum in range(1): #因为range()函数的循环是从0开始,所以都需要加1,分别创建每份测试的题目以及答案 quizFile = open('capitalsquiz%s.txt'%(quizNum + 1),'w') answerKeyFile = open('capitalsquiz_answer%s.txt'%(quizNum + 1),'w') #在测试中留空,已供填写日期,姓名等,以写模式写文档不会自动换行,所以需要加入 quizFile.write('姓名: 年龄: 日期: ') quizFile.write((' '*20)+'省会测试题(%s卷)'%(quizNum + 1)) #留空20个空格,加题目序号 quizFile.write(' ') #将资料库中的键随机打乱之后存入states中 states = list(capitals.keys()) random.shuffle(states) #del是删除列表操作,不同于def,看清楚 for questionNum in range(20): correctAnswer = capitals[states[questionNum]] #根据随机后的states在capitals中反查正确答案 wrongAnswers = list(capitals.values()) #列举所以答案 del wrongAnswers[wrongAnswers.index(correctAnswer)] #删除列举中的正确答案,index方法,找到返回索引值,然后由del删除 wrongAnswers = random.sample(wrongAnswers,3) #sample方法,在已给的序列中随机选取指定长度片段,不做修改 answerOptions = wrongAnswers + [correctAnswer] #答案是,正确答案加3个错误答案 random.shuffle(answerOptions) # 将答案的顺序进行打乱 quizFile.write('%s.%s的省会城市是? '%(questionNum + 1,states[questionNum])) for i in range(4): quizFile.write('%s.%s '%('ABCD'[i],answerOptions[i])) #给出选项 quizFile.write(' ') #结尾空行 answerKeyFile.write('%s,%s '%(questionNum + 1,'ABCD'[answerOptions.index(correctAnswer)]))#由正确答案反求序号,得出对应的ABCD, #进过写操作,记得关闭文档 quizFile.close() answerKeyFile.close()
运行结果:
题目:
答案:
导入一个题库,我可以出N张卷子- -,纪念当初的高三生活!