去年学习了python的读写文件部分,了解了python读写的常用模块os、shelve,今天准备把课后作业试着自己做一下

目标:1)生成35份试卷、每个试卷有50道选择题

   2)为了防止有学生作弊,需要将每份试卷的题目顺序都不一样

思路:1)首先要创建35份不同的测验试卷

   2)然后为每份试卷创建50个多重选择题,让他们的次序随机。

   3)为每个问题提供一个正确答案和3个错误的干扰选项,并且选项的次序随机。

   4)将35份测试试卷写到35个文本文件中。

   5)将答案写到35个文本文件中。

下面开始:

  经过一番思考,电光火石间,键盘上火花四溅,不一会儿功夫,花我9.9大洋的键盘就分崩离析。不仅是因为我的速度,还是因为每个按键,只有一次与我手指亲吻的机会,假如他没有在0.000001秒内弹起,他就不会通过考验,而他必须为此付出代价,流浪,只有流浪,才能让它认识到自己傲娇的代价。好了,在他最后一次被我弹起,在北纬N22°47′47.18″ 东经E136°0′38.67″ 这片土地上旋转跳跃的时候,这一刻,请我们羡慕他一次,他得以看到屏幕上一闪而逝的代码。他会明白自己是有多么的幸运,而前一刻心中的不甘是有多么可笑。在最后一刻,他回首看了一眼自己的母体,那条崭新的键盘,只不过他的兄弟都已不再,依旧像第一次看见它的时候,它想起来了,在记忆的工厂里,自己是被选中的第一个按键,被一双粗糙的大手反复的摩擦之后,打住。。。这恼人的意识流

来了

# The quiz data. Keys are states and values are their capitals

# Generate 35quiz files.
for quizNum in range(35):
#Create the quiz and answer key files.
quizFile=open('capitalsquiz%s.txt'%(quizNum+1),'w')  #占位符的使用
answerKeyFile=open('capitalsquiz_answers%s.txt'%(quizNum+1),'w') #Write out the header for the quiz.
quizFile.write('Name:\n\nDate:\n\nPeriod:\n\n')
quizFile.write((' '*20)+'State Capitals Quiz(Form %s)' % (quizNum+1))  #打印若干个相同的字符/串便捷的写法
quizFile.write('\n\n') #Shuffle the order of the states.
states=list(capitals.keys())
random.shuffle(states)  #random.shuffle()会将列表states里面的内容打乱 #Loop throgh all 50 states,making a question for each
for questionNum in range(50):
#Get right and wrong answers  
correctAnswer=capitals[states[questionNum]]  #得到错误答案的方法采用的是:先使用字典的values()方法获取所有答案,在复制到新的列表中,删去正确的答案
wrongAnswers=list(capitals.values())
del wrongAnswers[wrongAnswers.index(correctAnswer)]
wrongAnswers=random.sample(wrongAnswers,3)  #random.sample(parameter1,parameter2)从参数1中随机选出参数2指定的个数
answerOptions=wrongAnswers+[correctAnswer]
random.shuffle(answerOptions)  #在打乱一次,防止每个题目正确答案选项都一样 #write the question and the answer options to the quiz file.
quizFile.write('%s.What is the capital of %s?\n' % (questionNum+1,states[questionNum]))
for i in range(4):
quizFile.write('%s.%s\n' % ('ABCD'[i],answerOptions[i]))
quizFile.write('\n') #write the answer key to a file.
answerKeyFile.write('%s.%s\n'%(questionNum+1,' ABCD'[answerOptions.index(correctAnswer)]))  #注意这里不要选择麻烦的方法,要熟练使用
quizFile.close()
answerKeyFile.close()

Python 读写文件 小应用:生成随机的测验试卷文件的更多相关文章

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

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

  2. <每日一题>题目28:生成随机的测验试卷(单选题)

    #项目:生成随机的测验试卷文件 import random #资料库 capitals = {'北京市':'京','上海市':'沪','天津市':'津','重庆市':'渝','河北省':'冀','山西 ...

  3. python实践项目八:生成随机试卷文件

    描述:匹配美国50个州的首府. 下面是程序需要完成的任务: • 创建35 份不同的测验试卷. • 为每份试卷创建50 个多重选择题,次序随机. • 为每个问题提供一个正确答案和3 个随机的错误答案,次 ...

  4. 生成随机验证码,上传图片文件,解析HTML

    1.生成随机图片验证码 1.1 页面调用createvalidatecode 生成随机图片验证码方法: <div class="inputLine"><label ...

  5. 利用Python完成一个小游戏:随机挑选一个单词,并对其进行乱序,玩家要猜出原始单词

    一 Python的概述以及游戏的内容 Python是一种功能强大且易于使用的编程语言,更接近人类语言,以至于人们都说它是“以思考的速度编程”:Python具备现代编程语言所应具备的一切功能:Pytho ...

  6. [ Python - 5 ] 通过random模块生成随机字符串

    import random checkcode = '' for i in range(4): if i == random.randint(0,3): current = chr(random.ra ...

  7. 从用python自动生成.h的头文件集合和类声明集合到用python读写文件

    最近在用python自动生成c++的类.因为这些类会根据需求不同产生不同的类,所以需要用python自动生成.由于会产生大量的类,而且这些类是变化的.所以如果是在某个.h中要用include来加载这些 ...

  8. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    一.上传文件 上传一个图片 使用input type="file",来上传一个文件.注意:form表单必须添加属性enctype="multipart/form-data ...

  9. 用Python读写Excel文件(转)

    原文:google.com/ncr 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TA ...

随机推荐

  1. JavaScript学习——使用JS完成全选和全不选操作

    1.我们希望在后台系统实现一个批量删除的操作(全选所有的复选框)和全不选,显示效果如下: 2.步骤分析: 第一步:确定事件(onclick)并为其绑定一个函数(事件绑定到编号前面的复选框里面) 第二步 ...

  2. 在sql server数据库的一个表中如何查询共有多少字段

    select a.* from sys.columns a,sys.tables bwhere a.object_id = b.object_id and b.name = '要查的表名'

  3. windows连接投影仪后桌面画面和白板画面不一致

    windows连接投影仪后桌面画面和白板画面不一致: 一. windows 搜索: 投影仪 选择相应的效果:

  4. 我所认识的EXT2(一)

    前言: 本文是笔者自己在学习文件系统中的一些体会,写出来和大家分享一下.本文首先是介绍了下文件系统的一些理论概念,然后分析了ext2文件系统的原理和部分源码. 文件系统是什么: 人们在认识一件陌生事物 ...

  5. 优动漫PAINT-樱花教程

    很雅致清新的樱花教程~在很多地方都可以运用到哟~原文转载自优动漫官网. 想要Get到更多有关优动漫的信息包括软件下载,可关注http://www.dongmansoft.com.

  6. js的onclick和jq的click以及on和bind的区别

    onclick和click,只能静态绑定点击事件:bind的可以一次绑定多个事件(click/onmouseover等):on可以动态的绑定事件,当页面加载完成调用on即可

  7. django框架-DRF工程之权限功能

    1.相对于flask,原生而言django,DRF做的则更加的合理化,想要给予用户相应的权限,首先需要在settings中进行配置 REST_FRAMEWORK = { 'DEAFAULT_PERMI ...

  8. [NOIP补坑计划]NOIP2014 题解&做题心得

    六道普及组题,没啥好说的 场上预计得分:100+100+100+100+100+100=600(省一分数线490) (AK是不可能AK的,这辈子不可能AK的) 题解: D1T1 生活大爆炸版石头剪刀布 ...

  9. NOIp2018模拟赛四十五~??

    欠的太多,咕了咕了 最近复赛临近时间紧,就不每次都写感想和题解了,只写点有意义的好题

  10. linux下安装jdk跟tomcat

    文章参考    https://www.cnblogs.com/geekdc/p/5607100.html   Linux服务器安装jdk+tomcat https://baijiahao.baidu ...