#项目:生成随机的测验试卷文件
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')
#在测试中留空,已供填写日期,姓名等,以写模式写文档不会自动换行,所以需要加入\n
quizFile.write('姓名:\n\n年龄:\n\n日期:\n\n')
quizFile.write((' '*20)+'省会测试题(%s卷)'%(quizNum + 1)) #留空20个空格,加题目序号
quizFile.write('\n\n')
#将资料库中的键随机打乱之后存入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的省会城市是?\n'%(questionNum + 1,states[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)]))#由正确答案反求序号,得出对应的ABCD,
#进过写操作,记得关闭文档
quizFile.close()
answerKeyFile.close()

  运行结果:

题目:

答案:

导入一个题库,我可以出N张卷子- -,纪念当初的高三生活!

<每日一题>题目28:生成随机的测验试卷(单选题)的更多相关文章

  1. <每日一题>题目28:简单的python练习题(51-60)

    #51.一行代码实现1-100的和 sum(range(1,101)) #52.如何在一个函数内部修改全局变量 ''' 利用global ''' #53.字典如何删除和合并2个字典 ''' del d ...

  2. Python 读写文件 小应用:生成随机的测验试卷文件

    去年学习了python的读写文件部分,了解了python读写的常用模块os.shelve,今天准备把课后作业试着自己做一下 目标:1)生成35份试卷.每个试卷有50道选择题 2)为了防止有学生作弊,需 ...

  3. Python实践练习:生成随机的测验试卷文件

    题目 假如你是一位地理老师,班上有 35 名学生,你希望进行美国各州首府的一个小测验.不妙的是,班里有几个坏蛋,你无法确信学生不会作弊.你希望随机调整问题的次序,这样每份试卷都是独一无二的,这让任何人 ...

  4. <每日一题>题目21:简单的python练习题(21-30)

    #21.cookie和session的区别 ''' 1.cookie数据存放在客户的浏览器上,session数据存放在服务器上 2.cookie不是很安全,可以通过分析本地cookie组成伪造cook ...

  5. <每日一题>题目16:简单的python练习题(1-10)

    #1.python程序中__name__的作用是什么? __name__这个系统变量用来表示程序的运行方式. 如果程序在当前膜快运行,__name__的名称就是__main__, 如果不在(被调用), ...

  6. <每日一题>题目4:for循环套生成器的面试题

    题目: def add(n,i): return n+i def test(): for i in range(4): yield i g = test() for n in [1,10,5]: g ...

  7. <每日一题>题目5:生成器表达式面试题

    题目: def demo(): for i in range(4): yield i g = demo() g1 = (i for i in g ) g2 = (i for i in g1) prin ...

  8. <每日一题>题目14:拷贝的问题

    ''' 拷贝的问题 引用:无论怎么变都一起变 浅拷贝:只拷贝父对象,不会拷贝父对象中的子对象 深拷贝:完全拷贝,重新划分内存空间 ''' 具体如下图: 题目: #求a.b.c.d的值 import c ...

  9. <每日一题>题目15:mysql创建表及相关约束

    题目: 解答: 第一个表创建: create table class( cid int not null auto_increment primary key, caption char(20) no ...

随机推荐

  1. Mybatis使用Dao代码方式CURD

    Mybatis 使用Dao代码方式进行增.删.改.查. 1.Maven的pom.xml <project xmlns="http://maven.apache.org/POM/4.0. ...

  2. jquery中on绑定click事件在苹果手机中不起作用

    写一个div当做了一个按钮来使用. <div class="button"> <div class="sure"> 确定 </di ...

  3. VSCode 常用setiings.json设置

    { , , "editor.multiCursorModifier": "ctrlCmd", "editor.snippetSuggestions&q ...

  4. c# 使用Expression 生成sql

    使用Expression 生成sql  update语句的时候遇到了个问题 ,Expression<Action<T>>  la   这个委托里面老获取不到 引用类型的值,甚至 ...

  5. AOP-面向切面编程-1

    将方法类比成一个积木,哪里需要执行插到哪里 视野角度就是将一个程序比作几条绳子的集合,每个集合是一堆方法的集合,那么把绳子截断,绳子的切面就是一堆方法中一个方法与另一个方法的交界处,将你需要的方法切入 ...

  6. leetcode-第10周双周赛-5080-查找两颗二叉搜索树之和

    题目描述: 自己的提交: class Solution: def twoSumBSTs(self, root1: TreeNode, root2: TreeNode, target: int) -&g ...

  7. Maven远程仓库地址修改(精)

    国内最快的maven镜像  阿里云maven镜像 <repositories> <repository> <id>spring-snapshots</id&g ...

  8. C++Builder常用函数

    BCB函数集 1.内存分配     函数名称 AllocMem 函数说明 在队中分配指定字节的内存块,并将分配的每一个字节初始化为 0.函数原型如下: void * __fastcall AllocM ...

  9. SpringBoot_04_SpringBoot对ssm的整合

    1.在SpringBoot框架下对ssm进行整合 2.搭建一个web的SpringBoot框架 2.1添加pom.xml坐标(需要加上SpringBoot对jsp的支持,和对资源文件位置的说明) &l ...

  10. HTML5能取代Android和iOS应用程序吗?

    大量新生移动设备的兴起,改变了互联网的未来.在技术的发展上,HTML5会取代App应用吗?或者说能够在多大程度上取代呢?在HTML5规范中,已经加入了相机.磁力罗盘.GPS信息的支持.很多新兴浏览器也 ...