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

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

下面是程序需要完成的任务:

  • 创建35 份不同的测验试卷。

  • 为每份试卷创建50 个多重选择题,次序随机。

  • 为每个问题提供一个正确答案和3 个随机的错误答案,次序随机。

  • 将测验试卷写到35 个文本文件中。

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

这意味着代码需要做下面的事:

  • 将州和它们的首府保存在一个字典中。

  • 针对测验文本文件和答案文本文件,调用open()、 write()和close()。

  • 利用random.shuffle()随机调整问题和多重选项的次序。

代码

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3
 4 import random,os
 5 #设置试卷、答案存放路径
 6 testPath=‘F:\\Test‘
 7 answerPath=‘F:\\Answer‘
 8 #判断路径是否存在,若不存在则创建一个
 9 if not os.path.exists(testPath):
10     os.mkdir(testPath)
11 if not os.path.exists(answerPath):
12     os.mkdir(answerPath)
13 #将测试数据保存在一个字典中,key为州名,value为首府名
14 capitals = {‘Alabama‘: ‘Montgomery‘, ‘Alaska‘: ‘quesNumuneau‘, ‘Arizona‘: ‘Phoenix‘,
15             ‘Arkansas‘: ‘Little Rock‘, ‘California‘: ‘Sacramento‘, ‘Colorado‘: ‘Denver‘,
16             ‘Connecticut‘: ‘Hartford‘, ‘Delaware‘: ‘Dover‘, ‘Florida‘: ‘Tallahassee‘,
17             ‘Georgia‘: ‘Atlanta‘, ‘Hawaii‘: ‘Honolulu‘, ‘Idaho‘: ‘Boise‘, ‘Illinois‘:
18             ‘Springfield‘, ‘Indiana‘: ‘Indianapolis‘, ‘Iowa‘: ‘Des Moines‘, ‘Kansas‘:
19             ‘Topeka‘, ‘Kentucky‘: ‘Frankfort‘, ‘Louisiana‘: ‘Baton Rouge‘, ‘Maine‘:
20             ‘Augusta‘, ‘Maryland‘: ‘Annapolis‘, ‘Massachusetts‘: ‘Boston‘, ‘Michigan‘:
21             ‘Lansing‘, ‘Minnesota‘: ‘Saint Paul‘, ‘Mississippi‘: ‘quesNumackson‘, ‘Missouri‘:
22             ‘quesNumefferson City‘, ‘Montana‘: ‘Helena‘, ‘Nebraska‘: ‘Lincoln‘, ‘Nevada‘:
23             ‘Carson City‘, ‘New Hampshire‘: ‘Concord‘, ‘New quesNumersey‘: ‘Trenton‘, ‘NewMexico‘:
24             ‘Santa Fe‘, ‘New York‘: ‘Albany‘, ‘North Carolina‘: ‘Raleigh‘,
25             ‘North Dakota‘: ‘Bismarck‘, ‘Ohio‘: ‘Columbus‘, ‘Oklahoma‘: ‘Oklahoma City‘,
26             ‘Oregon‘: ‘Salem‘, ‘Pennsylvania‘: ‘Harrisburg‘, ‘Rhode Island‘: ‘Providence‘,
27             ‘South Carolina‘: ‘Columbia‘, ‘South Dakota‘: ‘Pierre‘, ‘Tennessee‘:
28             ‘Nashville‘, ‘Texas‘: ‘Austin‘, ‘Utah‘: ‘Salt Lake City‘, ‘Vermont‘:
29             ‘Montpelier‘, ‘Virginia‘: ‘Richmond‘, ‘Washington‘: ‘Olympia‘, ‘WestVirginia‘:
30             ‘Charleston‘, ‘Wisconsin‘: ‘Madison‘, ‘Wyoming‘: ‘Cheyenne‘}
31 #循环35次,创建35套试卷
32 for fileNum in range(35):
33     #os.path.quesNumoin:将路径和文件名连接起来,相应的文件位置即可确定
34     quesFile=open(os.path.join(testPath,‘question%s.txt‘ %(fileNum+1)),‘w‘)
35     answerFile=open(os.path.join(answerPath,‘answer%s.txt‘ %(fileNum+1)),‘w‘)
36     #写试卷的抬头信息
37     quesFile.write(‘Name:\n\nDate:\n\nPeriod:\n\n‘)
38     quesFile.write((‘ ‘*20)+‘state Capitals Quiz(Form %s)‘ %(fileNum+1))
39     quesFile.write(‘\n\n‘)
40     #将州名写入一个列表
41     states=list(capitals.keys())
42     #使用random.shuffle()函数将列表内容随机排序
43     random.shuffle(states)
44     #循环创建50个题目
45     for quesNum in range(50):
46         #获得正确答案
47         correctAnswer=capitals[states[quesNum]]
48         #将所有答案写入一个列表
49         wrongAnswers=list(capitals.values())
50         #删除列表中正确的答案,得到全是错误答案的列表
51         del wrongAnswers[wrongAnswers.index(correctAnswer)]
52         #从错误答案列表中随机获取3个答案
53         wrongAnswers=random.sample(wrongAnswers,3)
54         #将正常答案和3个错误答案放入一个选项列表
55         answerOptions=wrongAnswers+[correctAnswer]
56         #将选项列表随机排序
57         random.shuffle(answerOptions)
58
59         #将题目写入quesFile
60         quesFile.write(‘\n%s.What is the capital of %s?\n‘ %(quesNum+1,states[quesNum]))
61         #将选项写入quesFile
62         for k in range(4):
63             quesFile.write(‘\n%s.%s‘ %(‘ABCD‘[k],answerOptions[k]))
64         quesFile.write(‘\n‘)
65
66         #将答案写入answerFile
67         answerFile.write(‘%2s.%s\n‘ %(quesNum+1,‘ABCD‘[answerOptions.index(correctAnswer)]))
68     quesFile.close()
69     answerFile.close()

运行结果

原文地址:https://www.cnblogs.com/heyangblog/p/11159300.html

时间: 2024-10-07 07:37:12

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

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

题目 假如你是一位地理老师,班上有 35 名学生,你希望进行美国各州首府的一个小测验.不妙的是,班里有几个坏蛋,你无法确信学生不会作弊.你希望随机调整问题的次序,这样每份试卷都是独一无二的,这让任何人都不能从其他人那里抄袭答案.当然,手工完成这件事又费时又无聊.好在,你懂一些 Python. 下面是程序所做的事: ? 创建 35 份不同的测验试卷. ? 为每份试卷创建 50 个多重选择题,次序随机. ? 为每个问题提供一个正确答案和 3 个随机的错误答案,次序随机. ? 将测验试卷写到 35 个

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

生成 requirements.txt 文件的目的: 安装 pthon 项目时需要把此项目所有依赖的第三方包安装完成.项目依赖的第三方包统一放到 requirements.txt 文件中即可. 怎么自动生成 requirements.txt 文件? 安装 pipreqs 第三方包:pip install pipreqs 在 setup.py 文件的路径下执行命令:pipreqs . 项目结构如下: 原文地址:https://www.cnblogs.com/ronky/p/9777057.html

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

PIL模块的安装 pip3 install pillow 生成随机验证码图片 import random from PIL import Image, ImageDraw, ImageFont from io import BytesIO def random_str(): ''' 生成随机字符 :return:随机字符 ''' random_int = str(random.randint(0,9)) random_up = chr(random.randint(65,90)) random_

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

描述:多个文件,文件名名包含美国风格的日期( MM-DD-YYYY),需要将它们改名为欧洲风格的日期( DD-MM-YYYY) 代码1:先创建100个文件名为美国风格日期的文件(文件路径为项目当前路径下) 1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 #先创建一百个文件名为美国风格日期的文件 4 import os,random 5 for num in range(100): 6 mm=random.randint(1,12) 7 dd=ran

python实战系列之生成随机验证码(03)

背景:在一些登陆网站中,输入用户名和密码之后,通常也需要输入验证码,验证码能够用于加密的salt,防止一些恶意攻击,如下通过python生成任意长度的随机验证码,验证码大写字母,小写字母和数字组成,其中小写字母由97至122的ASIIC码组成,大小字母则有65至90组成,通过chr()函数,将ASIIC码转换为字母,如下通过几行代码即可实现. 程序内容: #!/usr/bin/env python #_*_ coding:utf8 _*_ #author:Happy #来自Happy实验室,该程

python实践项目一:Collatz函数

要求1:编写一个名为 collatz()的函数,它有一个名为 number 的参数.如果参数是偶数,那么 collatz()就打印出 number // 2, 并返回该值.如果 number 是奇数, collatz()就打印并返回 3 * number + 1.然后编写一个程序,让用户输入一个整数,并不断对这个数调用 collatz(), 直到函数返回值1. 要求2:输入验证:在前面的项目中添加 try 和 except 语句,检测用户是否输入了一个非整数的字符串.正常情况下, int()函数

python实践项目—Collatz序列

Collatz序列题意说明 编写一个名为collatz()的函数,它有一个名为number 的参数.如果参数是偶数,那么collatz()就打印出number // 2,并返回该值.如果number 是奇数,collatz()就打印并返回3 * number + 1. 然后编写一个程序,让用户输入一个整数,并不断对这个数调用collatz(),直到函数返回值1(令人惊奇的是,这个序列对于任何整数都有效,利用这个序列,你迟早会得到1!既使数学家也不能确定为什么.你的程序在研究所谓的"Collatz

python 实践项目

项目一:让用户输入圆的半径,告诉用户圆的面积 思路: 1.首先需要让用户输入一个字符串,即圆的半径 2.判断用户输入的字符串是否为数字  isalpha 3.求圆的面积需要调用到math模块,所以要导入该模块 原文地址:https://www.cnblogs.com/liangzhenghong/p/10704655.html

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

#项目:生成随机的测验试卷文件 import random #资料库 capitals = {'北京市':'京','上海市':'沪','天津市':'津','重庆市':'渝','河北省':'冀','山西省':'晋','辽宁省':'辽','黑龙江省':'黑','吉林省':'吉','江苏省':'苏','浙江省':'浙','安徽省':'皖','福建省':'闽','江西省':'赣','山东省':'鲁','河南省':'豫','湖北省':'鄂','湖南省':'湘','广东省':'粤','海南省':'琼','四