#项目:生成随机的测验试卷文件
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. 【第五周读书笔记】我是一只IT小小鸟

    读了第一个同学的自述,我印象最深的就是一些高分同学,只是机械性地背诵知识点,然后不停刷题,只是为了拿一个高分,然而他们对学科的一些基本概念都没有掌握牢靠.高分,并不代表学的就好.学得好不仅仅要牢靠掌握 ...

  2. Sqlite多线程相关整理

    Sqlite多线程相关整理 Sqlite With MultiThreads 什么是线程安全? 当多个线程访问某个方法时,不管你通过怎样的调用方式.或者说这些线程如何交替地执行,我们在主程序中不需要去 ...

  3. Windows 获取控制台窗口句柄

    详细信息 因为多个窗口可能具有相同的标题,您应该更改当前的控制台窗口标题为唯一的标题.这将有助于防止返回不正确的窗口句柄.使用 SetConsoleTitle() 来更改当前的控制台窗口标题.下面是此 ...

  4. duilib教程之duilib入门简明教程14.部分bug 2

    上一个教程中提到了ActiveX的Bug,即如果主窗口直接用变量生成,则关闭窗口时会产生崩溃      如果用new的方式生成,则不会崩溃,所以给出一个临时的快速解决方案,即主窗口都用new生成,_t ...

  5. (转)自定义ClassLoader ----可以加载第三方jar包

    package com.classloader.util; import java.io.IOException; import java.net.MalformedURLException; imp ...

  6. 怎样使用github?(转)

    怎样使用github?(转) 转自: 怎样使用 GitHub? - 知乎https://www.zhihu.com/question/20070065 珊姗是个小太阳 ❤努力做最胖//bang的健身博 ...

  7. 17.splash_case03

    # python执行lua脚本 import requests from urllib.parse import quote lua = ''' function main(splash) retur ...

  8. Eclipse添加git插件及操作

    注册账号新建仓库 在Github已经注册成功自己的账号 新建一个仓库 创建成功后记住url: 安装Git插件 首先像安装Pydev一样 点击help的Install New Software 点击Ad ...

  9. 海量可视化日志分析平台之ELK搭建

    ELK是什么? E=ElasticSearch ,一款基于的Lucene的分布式搜索引擎,我们熟悉的github,就是由ElastiSearch提供的搜索,据传已经有10TB+的数据量. L=LogS ...

  10. Django问题2

    接触django是从上个月开始,学习python时间也不长,但我经常在社区看看别人发表的文章,早上看到一篇不错的博客,却一直不能访 问,最终从bing的缓存里找到,因为害怕丢失和忘掉,所以顺便翻译过来 ...