去年学习了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博文参考书籍

    you don't know js系列书籍是谷歌地图开发人员编写,内容非常好,四卷已收集齐全. 笔者打包上传到了CSDN,下载地址: http://download.csdn.net/detail/r ...

  2. AOJ GRL_1_B: Shortest Path - Single Source Shortest Path (Negative Edges) (Bellman-Frod算法求负圈和单源最短路径)

    题目链接: http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_B   Single Source Shortest Path ...

  3. 关于目标检测 Object detection

    NO1.目标检测 (分类+定位) 目标检测(Object Detection)是图像分类的延伸,除了分类任务,还要给定多个检测目标的坐标位置.      NO2.目标检测的发展 R-CNN是最早基于C ...

  4. Collectio集合,List《ArrayList,LinkedList》

    集合: Collection类 package com.collection.demo; import java.util.ArrayList; import java.util.Arrays; im ...

  5. react-native之文件上传下载

    目录 文件上传 1.文件选择 2.文件上传 1.FormData对象包装 2.上传示例 文件下载 最近react-native项目上需要做文件上传下载的功能,由于才接触react-native不久,好 ...

  6. luogu P3396 哈希冲突(分块?)

    我们可以维护一个\(f[i][j]\)代表%\(i\)意义下得\(j\)的答案.然后维护就炸了. 先设\(x=\sqrt{n}\)然后我们发现,当\(i>x\)时我们直接暴力复杂度为\(O(x) ...

  7. /lib64和/usr/lib64和/usr/local/lib64的区别

    简单说,/lib64是内核级的,/usr/lib64是系统级的,/usr/local/lib64是用户级的. /lib/ — 包含许多被 /bin/ 和 /sbin/ 中的程序使用的库文件.目录 /u ...

  8. 制作PC端的安装程序

    一个多月不写博客了,不造大家有没有想我,(别自恋了,寥寥无几的粉丝,谁会想你),呜呜~~~ 好了,废话少叙,借用郭德纲老板的话,天儿不早了,干点正事儿吧! 一.序 Unity开发者都知道,打包出来的e ...

  9. unity 调用 .dll 或 .so时遇到的问题

    1.32位的 .dll 无法在64位的unity编辑器下运行. System.DllNotFoundException: xxx  , 64位的程序运行32位的dll是会报这种错 2.Failed t ...

  10. 常见VPS buy地址

    ***,也是最适合新手使用的: https://bwh1.net/ (支持支付宝) vultr,以下是我的分享链接: https://www.vultr.com/(支持支付宝) SugarHosts: ...