python之生成随机测验试卷
自己又开始懒散的态度生活,所以几乎有两个月没有更博了。
项目:美国各州首府地理考试,为防止作弊,35份试卷,50道题随机次序,生成独一无二的试卷。
基本想法:
1.将各州首府的地方和首府写入列表,以Key:value列表形式存储
2.for循环,调用open()生成35份试卷以及对应的35份答案
3.写入试卷的标题头,例如试卷名以及填写班级姓名学号的区域
4.for循环,利用random.shuffle()随机生成50道问题以及ABCD的答案次序
5.在生成问题的同时将问题的正确答案写入答案的文件中
6.调用close()关闭文件
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', 'Kansas':
'Topeka', 'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge', 'Maine':
'Augusta', 'Maryland': 'Annapolis', 'Massachusetts': 'Boston', 'Michigan':
'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'Jackson', 'Missouri':
'Jefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln', 'Nevada':
'Carson City', 'New Hampshire': 'Concord', 'New Jersey': 'Trenton', 'New Mexico': 'Santa Fe', 'New York': 'Albany', 'North Carolina': 'Raleigh',
'North Dakota': 'Bismarck', 'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City',
'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence',
'South Carolina': 'Columbia', 'South Dakota': 'Pierre', 'Tennessee':
'Nashville', 'Texas': 'Austin', 'Utah': 'Salt Lake City', 'Vermont':
'Montpelier', 'Virginia': 'Richmond', 'Washington': 'Olympia', 'West Virginia': 'Charleston', 'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'} #创建35份试卷和答案的文件
for filenum in range(35):
file = open("D:\\testing%s.txt"%(filenum + 1),'w')
answer = open("D:\\answer%s.txt"%(filenum + 1),'w')
#设置每一份试卷的标题
file.write(" " * 20 + "America State testing%s\n"%(filenum + 1))
file.write("Your name:" + "_________" + " " * 3 + "Your class name:" + "________" + " " * 3 + "Your number:" + "________"+"\n\n\n") #将各州的键存储在statelist上,并且打乱顺序,以便以出的试卷50道题乱序
statelist = list(capitals.keys())
random.shuffle(statelist) #for循环创建50道题目
for i in range(50):
#将正确答案存储
#且将所有的键值存储在All_answer中
#去除正确答案后将剩余答案存储在wronge_answer中
#随机取出三个后与正确答案存储在一个列表中
#打乱顺序写入ABCD选项中
correct_answer = capitals[statelist[i]]
All_answer = list(capitals.values())
del All_answer[All_answer.index(correct_answer)]
wronge_answer = random.sample(All_answer,3)
Answer = wronge_answer + [correct_answer]
random.shuffle(Answer) #每一道题的模板
file.write('%s. What is the capital of %s?\n' % (i+1,statelist[i]))
for j in range(4):
file.write('%s.%s\n' % ('ABCD'[j],Answer[j]))
#将正确答案写入每一份相对应的答案文件中
answer.write('%s.%s\n' % ((i+1),'ABCD'[Answer.index(correct_answer)])) file.close()
answer.close()
python之生成随机测验试卷的更多相关文章
- python faker 生成随机类型字符串
以前生成测试字符时,用random模块拼来拼去来生成随机串,如姓名,手机,身份证等,还是费一些功夫,不过有了faker模块,一切变得简单起来 基本使用: from faker import Faker ...
- python random生成随机手机号
上代码 #--------------- #!/usr/bin/python #_*_coding:UTF-8_*_ import random #生成随机手机号 str_start=random.c ...
- python基础-生成随机字符串方法
python解释器示例 >>> import uuid >>> uuid.uuid1() UUID('ae6822e6-c976-11e6-82e0-0090f5f ...
- [Python]random生成随机6位验证码
#!/usr/bin/env pyhton # coding:utf-8 # @Time : 2020-02-16 10:07 # @Author : LeoShi # @Site : # @File ...
- python图像处理-生成随机验证码
前面说了PIL库,还说了图片的缩放.旋转和翻转.现在说下网站上常用的随机验证码的生成.参考网站:https://www.liaoxuefeng.com/wiki/1016959663602400/10 ...
- python中生成随机整数(random模块)
1.从一个序列中随机选取一个元素返回: random.choice(sep) 2.用于将一个列表中的元素打乱 random.shuffle(sep) 3.在sep列表中随机选取k个 ...
- Python 读写文件 小应用:生成随机的测验试卷文件
去年学习了python的读写文件部分,了解了python读写的常用模块os.shelve,今天准备把课后作业试着自己做一下 目标:1)生成35份试卷.每个试卷有50道选择题 2)为了防止有学生作弊,需 ...
- Python实践练习:生成随机的测验试卷文件
题目 假如你是一位地理老师,班上有 35 名学生,你希望进行美国各州首府的一个小测验.不妙的是,班里有几个坏蛋,你无法确信学生不会作弊.你希望随机调整问题的次序,这样每份试卷都是独一无二的,这让任何人 ...
- python实践项目八:生成随机试卷文件
描述:匹配美国50个州的首府. 下面是程序需要完成的任务: • 创建35 份不同的测验试卷. • 为每份试卷创建50 个多重选择题,次序随机. • 为每个问题提供一个正确答案和3 个随机的错误答案,次 ...
随机推荐
- 【Java并发编程】1、ConcurrentHashMap原理分析
集合是编程中最常用的数据结构.而谈到并发,几乎总是离不开集合这类高级数据结构的支持.比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap).这篇文章主 ...
- HDU1083(KB10-C 二分图最大匹配)
Courses Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- 小程序 js中获取时间new date()的用法(网络复制过来自用)
js中获取时间new date()的用法 获取时间: 1 var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获 ...
- cf97D. Robot in Basement(模拟 bitset)
题意 题目链接 Sol 接下来我的实现方式和论文里不太一样 然后用bitset优化,上下走分别对应着右移/左移m位,左右走对应着右移/左移1位 我们可以直接预处理出能走的格子和不能走的格子,每次走的时 ...
- node 静态伺服(搭建服务)
基本功能 不急着写下第一行代码,而是先梳理一下就基本功能而言有哪些步骤. 在本地根据指定端口启动一个http server,等待着来自客户端的请求 当请求抵达时,根据请求的url,以设置的静态文件目录 ...
- @EnableDiscoveryClient与@EnableEurekaClient 区别
Eureka依赖: <dependency> <groupId>org.springframework.cloud</groupId> <arti ...
- JavaSE——多线程实现的两种方式
Thread类: 创建新执行线程有两种方法. 一种方法是将类声明为 Thread 的子类.该子类应重写 Thread 类的 run 方法.接下来可以分配并启动该子类的实例.例如,计算大于某一规定值的质 ...
- Nginx的虚拟主机
1.虚拟主机的概念和类型 1.1 概念: 所谓的虚拟主机,在web服务里面就是一个独立的网站站点,这个站点对应独立的域名(也有可能是IP或者端口),具有独立的程序和资源目录,可以独立的对外提供服务. ...
- Android--自定义控件---自动分页的GridView
最近,根据项目需求,需要一个能够自动分页的导航,所以便自定义了一个自动分页的GridView. 思路:继承RelativeLayout,然后在里面放了一个viewpager和一个GridView... ...
- leveldb源码分析--SSTable之逻辑结构
SSTable是leveldb 的核心模块,这也是其称为leveldb的原因,leveldb正是通过将数据分为不同level的数据分为对应的不同的数据文件存储到磁盘之中的.为了理解其机制,我们首先看看 ...