描述:匹配美国50个州的首府。

下面是程序需要完成的任务:
  • 创建35 份不同的测验试卷。
  • 为每份试卷创建50 个多重选择题,次序随机。
  • 为每个问题提供一个正确答案和3 个随机的错误答案,次序随机。
  • 将测验试卷写到35 个文本文件中。
  • 将答案写到35 个文本文件中。
这意味着代码需要做下面的事:
  • 将州和它们的首府保存在一个字典中。
  • 针对测验文本文件和答案文本文件,调用open()、 write()和close()。
  • 利用random.shuffle()随机调整问题和多重选项的次序。
代码
 #!/usr/bin/python
# -*- coding: UTF-8 -*- import random,os
#设置试卷、答案存放路径
testPath='F:\\Test'
answerPath='F:\\Answer'
#判断路径是否存在,若不存在则创建一个
if not os.path.exists(testPath):
os.mkdir(testPath)
if not os.path.exists(answerPath):
os.mkdir(answerPath)
#将测试数据保存在一个字典中,key为州名,value为首府名
capitals = {'Alabama': 'Montgomery', 'Alaska': 'quesNumuneau', 'Arizona': 'Phoenix',
'Arkansas': 'Little Rock', 'California': 'Sacramento', 'Colorado': 'Denver',
'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallahassee',
'Georgia': 'Atlanta', 'Hawaii': 'Honolulu', 'Idaho': 'Boise', 'Illinois':
'Springfield', 'Indiana': 'Indianapolis', 'Iowa': 'Des Moines', 'Kansas':
'Topeka', 'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge', 'Maine':
'Augusta', 'Maryland': 'Annapolis', 'Massachusetts': 'Boston', 'Michigan':
'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'quesNumackson', 'Missouri':
'quesNumefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln', 'Nevada':
'Carson City', 'New Hampshire': 'Concord', 'New quesNumersey': 'Trenton', 'NewMexico':
'Santa Fe', 'New York': 'Albany', 'North Carolina': 'Raleigh',
'North Dakota': 'Bismarck', 'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City',
'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence',
'South Carolina': 'Columbia', 'South Dakota': 'Pierre', 'Tennessee':
'Nashville', 'Texas': 'Austin', 'Utah': 'Salt Lake City', 'Vermont':
'Montpelier', 'Virginia': 'Richmond', 'Washington': 'Olympia', 'WestVirginia':
'Charleston', 'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'}
#循环35次,创建35套试卷
for fileNum in range(35):
#os.path.quesNumoin:将路径和文件名连接起来,相应的文件位置即可确定
quesFile=open(os.path.join(testPath,'question%s.txt' %(fileNum+1)),'w')
answerFile=open(os.path.join(answerPath,'answer%s.txt' %(fileNum+1)),'w')
#写试卷的抬头信息
quesFile.write('Name:\n\nDate:\n\nPeriod:\n\n')
quesFile.write((' '*20)+'state Capitals Quiz(Form %s)' %(fileNum+1))
quesFile.write('\n\n')
#将州名写入一个列表
states=list(capitals.keys())
#使用random.shuffle()函数将列表内容随机排序
random.shuffle(states)
#循环创建50个题目
for quesNum in range(50):
#获得正确答案
correctAnswer=capitals[states[quesNum]]
#将所有答案写入一个列表
wrongAnswers=list(capitals.values())
#删除列表中正确的答案,得到全是错误答案的列表
del wrongAnswers[wrongAnswers.index(correctAnswer)]
#从错误答案列表中随机获取3个答案
wrongAnswers=random.sample(wrongAnswers,3)
#将正常答案和3个错误答案放入一个选项列表
answerOptions=wrongAnswers+[correctAnswer]
#将选项列表随机排序
random.shuffle(answerOptions) #将题目写入quesFile
quesFile.write('\n%s.What is the capital of %s?\n' %(quesNum+1,states[quesNum]))
#将选项写入quesFile
for k in range(4):
quesFile.write('\n%s.%s' %('ABCD'[k],answerOptions[k]))
quesFile.write('\n') #将答案写入answerFile
answerFile.write('%2s.%s\n' %(quesNum+1,'ABCD'[answerOptions.index(correctAnswer)]))
quesFile.close()
answerFile.close()

运行结果

python实践项目八:生成随机试卷文件的更多相关文章

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

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

  2. webpack打包vue项目之后生成的dist文件该怎么启动运行

    亲测,webpack打包vue项目之后生成的dist文件可以部署到 express 服务器上运行. 我的vue项目结构如下: 1. 进入该vue项目目录,打开git bash,执行:npm run b ...

  3. python 项目自动生成 requirements.txt 文件

    生成 requirements.txt 文件的目的: 安装 pthon 项目时需要把此项目所有依赖的第三方包安装完成.项目依赖的第三方包统一放到 requirements.txt 文件中即可. 怎么自 ...

  4. python实践项目十:zipfile模块-将一个文件夹备份到一个 ZIP 文件

    描述:将指定路径下的某文件夹备份到一个zip文件 代码: #!/usr/bin/python # -*- coding: UTF-8 -*- # backupToZip - Copies an ent ...

  5. python实践项目1

    python #南昌理工学院人工智能学院实验室 WORKSHOP 实践项目 import time print('welcome to our WORKSHOP') print('.......... ...

  6. Python使用PIL模块生成随机验证码

    PIL模块的安装 pip3 install pillow 生成随机验证码图片 import random from PIL import Image, ImageDraw, ImageFont fro ...

  7. Python实践项目2

    #南昌理工学院人工智能学院实验室WORKSHOP实践项目 import time import random SCRIPT_NPC_SCHOOL_SISTER = ['你好!', '你好!', '你是 ...

  8. python 项目自动生成requirements.txt文件

    主要使用目的: 任何应用程序通常需要设置安装所需并依赖一组类库来满足工作要求.通过requirements.txt可以一次性安装程序所需要和依赖的包. 为工程生成requirements.txt的两种 ...

  9. python实践项目九:操作文件-修改文件名

    描述:多个文件,文件名名包含美国风格的日期( MM-DD-YYYY),需要将它们改名为欧洲风格的日期( DD-MM-YYYY) 代码1:先创建100个文件名为美国风格日期的文件(文件路径为项目当前路径 ...

随机推荐

  1. MSDS 596 Homework

    MSDS 596 Homework 10 Due November 28 2017Notes. The lowest grade among all eleven homework will be d ...

  2. 异常检测(Anomaly detection): 异常检测算法(应用高斯分布)

    估计P(x)的分布--密度估计 我们有m个样本,每个样本有n个特征值,每个特征都分别服从不同的高斯分布,上图中的公式是在假设每个特征都独立的情况下,实际无论每个特征是否独立,这个公式的效果都不错.连乘 ...

  3. tensorflow API _ 6 (tf.gfile)

    一.gfile模块是什么 tf.gfile模块的主要角色是:1.提供一个接近Python文件对象的API,以及2.提供基于TensorFlow C ++ FileSystem API的实现. C ++ ...

  4. junit4的进一步探讨

    上次只是大概记录了下junit4几个常见标签的用法. 在这篇文章中,我们来进一步分析junit4的用法. 1.断言 junit4中一个很常见的用法就是断言.说到断言,大家再熟悉不过了.不过也许有的朋友 ...

  5. JSP九大隐式对象和四大域对象-----面试

    因为jsp实质是一个Servlet对象:jsp在第一次访问时会被Web容器翻译成Servlet,在执行过程:第一次访问---->inex.jsp---->index_jsp.java--- ...

  6. tensorflow2.0 学习(一)

    虽说是按<TensorFlow深度学习>这本书来学习的,但是总会碰到新的问题!记录下这些问题,有利于巩固知新. 之前学过一些tensorflow1.0的知识,到RNN这章节,后面没有再继续 ...

  7. php解决大文件断点续传

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  8. HTML5 文件读取

    一.定义 input的file类型会渲染为一个按钮和一段文字.点击按钮可打开文件选择窗口,文字表示对文件的描述(大部分情况下为文件名):file类型的input会有files属性,保存着文件的相关信息 ...

  9. Tkinter 之爬虫框架项目实战

    一.效果图 二.源码 ''' 测试内容页爬取''' def test_content_url(self): try: url = self.test_url_var.get().strip() ite ...

  10. GIT 安装和升级

    git 安装: http://git-scm.com/download/mac git 升级: $ git clone git://git.kernel.org/pub/scm/git/git.git