去年学习了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. winform控件命名规范对照表

    WinForm Control 命名规范 数据类型 数据类型简写 标准命名举例 Label lbl lblMessage LinkLabel llbl llblToday Button btn btn ...

  2. (转载)Mac下使用Android Studio 获取 SHA1和MD5

    Mac下使用Android Studio 获取 SHA1和MD5 2015-08-10 15:38 1776人阅读 评论(1) 收藏 举报  分类: Android(14)  版权声明:本文为博主原创 ...

  3. Date日期类 Calendar日历类 完成可视化日历

    package com.test; import java.text.DateFormat; import java.text.ParseException; import java.text.Sim ...

  4. 阿里云ecs : Couldn't connect to host, port: smtp.aliyun.com, 25; timeout -1;

    上传到服务器后javamail发邮件异常 链接 原来是ECS基于安全考虑,禁用了端口25. 改成465就可以发邮件了. p.setProperty("mail.smtp.socketFact ...

  5. sass的用法小结(二)

    3. 导入SASS文件; css有一个特别不常用的特性,即@import规则,它允许在一个css文件中导入其他css文件.然而,后果是只有执行到@import时,浏览器才会去下载其他css文件,这导致 ...

  6. django框架-Admin管理站点搭建

    在django框架中,admin基本上算是已经写好了的,拿过来进行简单的处理即可以使用的,相对于flask来说已经是相当的便捷了. 在使用中,步骤如下: 1.管理界面本地化:即将英文标题等的变成中文, ...

  7. iOS开发——循环遍历的比较

    常用的有for in.for循环.EnumerateObjectsUsingBlock 1.小规模的数据无所谓,但是对大量数据,for in 的遍历速度非常之快,不是for循环能比的: 2.对于数组, ...

  8. [洛谷P1580]yyy loves Easter_Egg I

    题目大意:很多人@一个人,如果那个人忍不住说话了,就轰炸成功,如果那个人没说话或者别的人没有@他或@很多个人,则轰炸失败.(具体见原题) 解题思路:字符串处理,好好用sscanf即可(细节见代码). ...

  9. django 开发之自定义日志器(二)

    2016-08-24 需求 在我们的真实环境中当我们出现错误的时候我们要记录下来,便于我们分析差错. 关于日志的代码文件 # 自定义日志输出信息 LOGGING = { 'version': 1, ' ...

  10. 2015 Multi-University Training Contest 4 hdu 5335 Walk Out

    Walk Out Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...