python RTL自动生成_Python编程快速上手让繁琐工作自动化-生成随机的测验试卷文件...

66d80b2d8572fd90f60204e46318e8a3.png

需求描述

假如你是一位地理老师,班上有 35 名学生,你希望进行全国的一个小测验。不妙的是,班里有几个坏蛋,你无法确信学生不会作弊。你希望随机调整问题的次序,这样每份试卷都是独一无二的,这让任何人都不能从其他人那里抄袭答案。当然,手工完成这件事又费时又无聊。好在,你懂一些 Python。

需求分析

程序用到了文件的操作:打开、写入、关闭,和随机数模块以及随机打乱的方法。

  1. 首先要有一个字典,包含所有省份和对应的省会。
  2. 创建 35 份不同的测验试卷。
  3. 为每份试卷创建所有包含所有省份的多重选择题,次序随机。
  4. 为每个问题提供一个正确答案和 3 个随机的错误答案,次序随机。
  5. 将测验试卷写到 35 个文本文件中。
  6. 将答案写到 35 个文本文件中。

代码展示

import random#创建35份试卷,问下列省份的省会是哪里,每份试卷的问题的顺序都不一样,防止抄袭。#包含省份和省会的字典capitals = {'湖南':'长沙', '湖北':'武汉', '广东':'广州', '广西':'南宁', '河北':'石家庄', '河南':'郑州', '山东':'济南', '山西':'太原', '江苏':'南京', '浙江':'杭州', '江西':'南昌', '黑龙江':'哈尔滨', '新疆':'乌鲁木齐', '内蒙古':'呼和浩特', '云南':'昆明', '贵州':'贵阳', '福建':'福州', '吉林':'长春', '安徽':'合肥', '四川':'成都', '西藏':'拉萨', '宁夏':'银川', '辽宁':'长春', '青海':'西宁', '甘肃':'兰州', '陕西':'西安', '台湾':'台北', '北京':'北京', '上海':'上海', '天津':'天津', '重庆':'重庆', '香港':'香港', '澳门':'澳门'}#创建35份试卷,每次循环就会生成一份试卷。for quizNum in range(35): # 创建问卷文件和答案文件 quizFile = open('试卷%s.txt' % (quizNum + 1), 'w', encoding='utf-8') answerFile = open('答案%s.txt' % (quizNum + 1), 'w') #写入试卷的头部 quizFile.write('姓名:日期:') quizFile.write('') #随机打乱省份的顺序,使每份试卷的问题顺序都不一样 allProvinces = list(capitals.keys()) random.shuffle(allProvinces) #开始循环设置答案选项,多少个省份就有多少道问题。 for questionNum in range(len(capitals)): #获取正确答案和其他三个错误答案 #这里的正确答案就是此次循环到的省份对应的省会。 correctAnswer = capitals[allProvinces[questionNum]] #这里的错误答案就是随机获取除此次循环对应省份的省会之外的3个省会即可。 allCapitalList = list(capitals.values()) #删除本次循环省份的省会 del allCapitalList[allCapitalList.index(correctAnswer)] #在已经删除掉正确省会的列表中随机选取三个省会 wrongAnswers = random.sample(allCapitalList, 3) #将错误答案和正确答案的列表相加获得本次循环(本题)的4个回答选项的一个列表。 answerOptions = wrongAnswers + [correctAnswer] #随机打乱生成的回答选项的顺序,否则正确答案都是第四个选项(D) random.shuffle(answerOptions) #写入问题到试卷文件 quizFile.write('{}. {}的省会是哪里?'.format(questionNum + 1, allProvinces[questionNum])) #开始写入每题的四个选项,每题循环4次 for i in range(4): quizFile.write(' {}. {}'.format('ABCD'[i], answerOptions[i])) quizFile.write('') # 将正确回答写入答案文件 answerFile.write('{}. {}'.format(questionNum + 1, 'ABCD'[answerOptions.index(correctAnswer)])) #设置为每个试卷的问题和答案就可以关闭这个试卷文件和答案文件 quizFile.close() answerFile.close()
86daf239f2bdd8812699e2ca35d8ba1c.png
e69350233ba4e35cb6af24c5939a617c.png
98bc67b1cf2d35eb3a4eea16fe364024.png
ed230249a7771a978fe5ff0e392552b9.png

执行结果

生成的试卷和答案。

10b84acc0305824c2c14f8c044c0de77.png

结果检查:

b39bc880304364427298027ac599ac38.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值