zoukankan      html  css  js  c++  java
  • 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:
    
    Date:
    
    Period:
    
    ')
    38     quesFile.write((' '*20)+'state Capitals Quiz(Form %s)' %(fileNum+1))
    39     quesFile.write('
    
    ')
    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('
    %s.What is the capital of %s?
    ' %(quesNum+1,states[quesNum]))
    61         #将选项写入quesFile
    62         for k in range(4):
    63             quesFile.write('
    %s.%s' %('ABCD'[k],answerOptions[k]))
    64         quesFile.write('
    ')
    65 
    66         #将答案写入answerFile
    67         answerFile.write('%2s.%s
    ' %(quesNum+1,'ABCD'[answerOptions.index(correctAnswer)]))
    68     quesFile.close()
    69     answerFile.close()

    运行结果

  • 相关阅读:
    sqlserver添加表、字段注释
    SQL语句增加字段、修改字段、修改类型、修改默认值
    端口概念
    删除数据库数据
    转移数据库表数据
    优化网站
    提高SQL查询效率
    相关方法扩展
    SQL空和NULL的区别
    C#分布式缓存Couchbase使用
  • 原文地址:https://www.cnblogs.com/heyangblog/p/11159300.html
Copyright © 2011-2022 走看看