#项目:生成随机的测验试卷文件
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. android的webView内部https/http混合以及自适应屏幕

    两种请求都有的情况下,会导致WebView加载不出来. //自适应屏幕 settings.setUseWideViewPort(true); settings.setLoadWithOverviewM ...

  2. c# 使用Expression 生成sql

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

  3. Python学习笔记(三)——文件系统中的常用方法

    OS模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir() 改变工作目录 listdir(path='.') 列举指定目录中的文件名('.'表示当 ...

  4. css悬浮在页面顶端

    .header{ position:fixed; margin-top:; width:%; z-index:; } .body{ position:relative; padding-top:119 ...

  5. 关于如何正确打开.wlf文件

    只简单说明一下保存/打开.wlf需要注意的内容. (1) 保存 在GUI界面保存时,先切换到sim窗口: 用命令行保存时,其格式为: vsim –wlf <wave_file> … (2) ...

  6. SpringCloudBus

    不重启微服务的情况下更新配置 配置服务端 tensquare_config配置依赖 <dependency> <groupId>org.springframework.clou ...

  7. Windows color

    设置默认的控制台前景和背景颜色. COLOR [attr] attr        指定控制台输出的颜色属性. 颜色属性由两个十六进制数字指定 -- 第一个对应于背景,第二个对应于前景.每个数字可以为 ...

  8. VS开发工具的常用插件

    转 http://www.spersky.com/post/vsPlugins.html 我目前主要用的是Hide Main Page——公司配给的电脑屏幕分辨率好小,还是1366*768的,去掉头可 ...

  9. Java基础:基本类型

    1.基本类型 Java中有8种基本类型,分为4类,分别为: 整型:包括  byte . short. int . long 泛型:float.double 字符型:char 布尔型:boolean 2 ...

  10. 愚人节老板发话了,免费送书 + 免费入驻Java知识星球!!

    愚人节快乐,今天的活动很重磅! 1.免费送5本重量级技术书籍,不骗人,小程序随机抽奖送出哦! 2.免费进星球,哈哈不可能,愚人节快乐!不过今天有重大优惠,见下文! 活动一:免费送出5本重量级书籍 赠书 ...