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

Posted heyangblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()

运行结果

技术图片

 

以上是关于python实践项目八:生成随机试卷文件的主要内容,如果未能解决你的问题,请参考以下文章

python 在指定的文件夹下生成随机的测验试卷文件

开发实践教程1:试卷生成系统6.7 试卷生成(FormTestPaper)

中小学数学卷子自动生成 - 结对项目wjy的代码分析

每日练习五:《Python编程快速上手+让繁琐工作自动化》第八章项目

开发实践教程1:试卷生成系统6.12 试卷管理(FormTestPaperManager)

随机生成一份试卷,试卷的种类分为单选多选判断三种题型。nodejs6.0 mysql