本文共 2722 字,大约阅读时间需要 9 分钟。
最近我的一个好朋友小杨拿到了她的教师资格证,马上就要成为一名老师了,虽说以前不怎么喜欢老师,但随着长大发现,老师还真是一个很好的职业。假期又多,又受人尊重,而且工作也很稳定。看来以后要叫她杨老师了。
最近在疯狂地为当老师做着准备。最近遇到了一些困惑,就是她不想像以前那样古板,每次都准备很多份一样的卷子,答案和题目都一样,这样就大大提高了学生作弊的可能。所以想制定一份特殊的考卷,让每个学生拿到的题目一样,但问题和答案选项的顺序不一样。
可是这个却没有她想的那么简单,每次都要手动打乱n份不同的卷子,这样工作量太大了,而且也没有一份参考答案,如果自己都不知道答案的话怎么办?最近她看我正在学习编程,于是就想问问我有什么好的办法可以解决。
虽说我最近在学编程是没错,但这可难倒我了,我也是个小菜鸟啊。
既然是朋友嘛,能帮就帮一下吧,于是我大概思考了一下能解决问题的步骤:
创建n份不同的试卷文件
为每份试卷创建m个选择题,次序随机
将试卷写到n个文本文件中
将答案写到n个文本文件中
突然有了思路,我们就做个只有选择题的试卷:选出每个省份的省会城市
接下来我们一起来实现一波
1.首先我们建立一个数据字典存储数据
capitals = { "湖南省": "长沙", "广东省": "广州", "山东省": "济南", "江苏省": "南京", "河南省": "郑州", "河北省": "石家庄", "陕西省": "西安", "福建省": "福州", "云南省": "昆明", "安徽省": "合肥", "海南省": "海口", "湖北省": "武汉", "山西省": "太原", "辽宁省": "沈阳", "黑龙江省": "哈尔滨", "贵州省": "贵阳", "甘肃省": "兰州", "青海省": "西宁", "吉林省": "长春", "浙江省": "杭州", "江西省": "南昌", "四川省": "成都", "西藏自治区": "拉萨", "广西壮族自治区": "南宁", "内蒙古自治区": "呼和浩特", "宁夏回族自治区": "银川", "新疆维吾尔自治区": "乌鲁木齐"}
2. 创建n个文件,并将内容输出到文件中
import randompath = "F:\\test\\exam"# 生成40个文件for quizNum in range(40): # 创建文件和问题的文件 quizFile = open(path + '考试试卷%s.doc' % (quizNum + 1), 'w', encoding='utf-8') answerKeyFile = open(path + '考试参考答案%s.txt' % (quizNum + 1), 'w', encoding='utf-8') # 输出头部内容 quizFile.write('姓名:\n\n日期:\n\n分数:\n\n') quizFile.write((' ' * 20) + '中国省份城市考试 (摘自 %s)' % (quizNum + 1)) quizFile.write('\n\n') # 获取数据字典中所有的key cities = list(capitals.keys()) # 打乱顺序 random.shuffle(cities) # 将问题和答案选项输出到文件 generateQuizAnswer(cities, quizFile) quizFile.close() answerKeyFile.close()print("生成成功")
3.将问题和答案选项输出到文件中
''' 生成问题和答案'''def generateQuizAnswer(cities, quizFile): for questionNum in range(len(capitals)): # 获取正确答案和错误答案 correctAnswer = capitals[cities[questionNum]] wrongAnswers = list(capitals.values()) # 移除一个正确答案,然后在剩下的列表中随机取三个错误答案 del wrongAnswers[wrongAnswers.index(correctAnswer)] wrongAnswers = random.sample(wrongAnswers, 3) # 组合成一个答案选项 answerOptions = wrongAnswers + [correctAnswer] random.shuffle(answerOptions) # 将内容写入测试试卷和答案文件 quizFile.write('%s.下列哪个是%s的省份城市?\n' % (questionNum + 1, cities[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)]))
最后生成了如下文件:
我们来对比一下试卷3和试卷2
我们看看答案:
试卷一的答案:,
试卷二的答案:
发现问题果然不一样,哈哈
这个程序还有很多问题,
word格式不好手动调整,一调整就要调整很多份
题目和答案不固定,错误选项都是从其他问题答案中取的,我觉得最好能拿一套题库,录入数据库,然后再进行试卷的生成好一些。不过目前学到的知识不支持我这么做,还是后面再跟进吧
喜欢本文的话,可以关注以下公众号,每天定时更新一篇python学习日记,让我们一起成长!
转载地址:http://banlf.baihongyu.com/