描述:匹配美国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. ubuntu18.04 + python3 安装pip3

    最近在学习python 网络爬虫,正好接触到python的requests模块 我的开发环境是ubuntu18.04+python3,这个系统是默认自带了python3,且版本是python 3.6. ...

  2. Collections.synchronizedList与CopyOnWriteArrayList比较

    1.单线程方式 2.多线程版本,不安全的 ArrayList 3.多线程版本,线程安全,CopyOnWriteArrayList()方式 4.多线程版本,线程安全,Collections.synchr ...

  3. 使用Quasar设计Material和IOS风格的响应式网站

    使用Quasar设计Material和IOS风格的响应式网站 栏目: CSS · 发布时间: 8个月前 来源: segmentfault.com   本文转载自:https://segmentfaul ...

  4. 基于Kafka的实时计算引擎如何选择?(转载)

    1.前言 目前实时计算的业务场景越来越多,实时计算引擎技术及生态也越来越成熟.以Flink和Spark为首的实时计算引擎,成为实时计算场景的重点考虑对象.那么,今天就来聊一聊基于Kafka的实时计算引 ...

  5. git的搭建和使用

    目录: 1.git与github介绍2.下载安装Git-20-64-bit.exe3.Git常用命令 git与github介绍 Git是什么 Git是一个开源的[分布式][版本控制系统],用于敏捷高效 ...

  6. linux系统管理——账号权限及归属管理练习

    1.创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令) 2.添加组帐号zonghe.caiwu.jishu,GID号分别设置为2001.2002.200 ...

  7. 洛谷 P1522 牛的旅行 Cow Tours 题解

    P1522 牛的旅行 Cow Tours 题目描述 农民 John的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不 ...

  8. go与python的不同

    go 开发中需要注意的与python的不同点 列出golang开发过程中与python的不同点,主要是在语法方面,golang的一些语法真是要人命啊. 1.golang可读性很强,与或对应&& ...

  9. USACO 奶牛抗议 Generic Cow Protests

    USACO 奶牛抗议 Generic Cow Protests Description 约翰家的N头奶牛聚集在一起,排成一列,正在进行一项抗议活动.第i头奶牛的理智度 为Ai,Ai可能是负数.约翰希望 ...

  10. (9)Go指针

    区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针. 要搞明白Go语言中的指针需要先知道3个概念:指针地址.指针类型和指针取值. Go语言中的指针 任何程序数据载入内存后,在内存 ...