Python小项目-------随机生成考试试卷

一、问题概述

       假如你是一位地理老师,班上有29个学生,你想测试一下班里的同学对中国所有省份省会城市的掌握情况。为了避免学生出现作弊的情况,你需要设计试卷题目,使得每张试卷的题目和答案都是随机生成的,这样就不会出现作弊的情况。如果是进行手动出题,那么耗费的时间是巨大的,还好,你懂得一些Python,如何使用代码设计来完成这一任务。

二、 问题梳理

你的程序应该做到以下事情:

  • 创建29份不同的测试试卷;
  • 为每份试卷创建29个选择题,次序随机生成;
  • 为每个问题提供一个正确答案,三个错误答案,次序随机生成;
  • 将试卷写到29个word文档中;
  • 将答案写到29个word文档中;

因此代码要做的事情:

  • 将各省和其省会保存到一个字典中;
  • 针对测试文件和答案文件,调用open()、write()、close()函数;
  • 利用random.shuffle()随机调整问题和多重选项的次序。

三、代码展示

具体功能实现代码如下:

import random
#1.将测验数据保存到一个字典中
capitals = {'黑龙江':'哈尔滨','吉林':'长春','辽宁':'沈阳','内蒙古':'呼和浩特','新疆':'乌鲁木齐','甘肃':'兰州','青海':'西宁',
            '西藏':'拉萨','四川':'成都','宁夏':'银川','陕西':'西安','山西':'太原','河北':'石家庄','山东':'济南',
            '北京':'北京','天津':'天津','河南':'郑州','安徽':'合肥','江苏':'南京','湖北':'武汉','重庆':'重庆','浙江':'杭州',
            '广西':'南宁','江西':'南昌','湖南':'长沙','福建':'福州','广东':'广州','云南':'昆明','海南':'海口'}

#2.创建测试文件,并打乱问题的次序

for quizNum in range(29):
    #2.1创建试题卷和试卷答案文档
    quizFile = open('试题卷%s.doc' % (quizNum + 1),'w')
    answerKeyFile = open('试卷答案%s.doc' % (quizNum + 1),'w')
    #2.2创建试卷头部学生所填写的信息
    quizFile.write('学号:\n姓名:\n日期:\n班级:\n')
    quizFile.write('猜各省省会(试卷%s)'%(quizNum + 1))
    quizFile.write('\n\n')
    #2.3创建随机排列的省会的列表
    states = list(capitals.keys())
    random.shuffle(states)

#3.创建答案选项
    for questionNum in range(29):
        correctAnswer = capitals[states[questionNum]]
        wrongAnswers = list(capitals.values())
        del wrongAnswers[wrongAnswers.index(correctAnswer)]
        wrongAnswers = random.sample(wrongAnswers,3)
        answerOptions = wrongAnswers + [correctAnswer]
        random.shuffle(answerOptions)
        #4.将内容写入到测试试卷和答案文件
        quizFile.write('%s. What is the capital of %s?\n' % (questionNum + 1,states[questionNum]))
        for i in range(4):
            quizFile.write(' %s. %s\n' % ('ABCD'[i],answerOptions[i]))
        quizFile.write('\n')
        answerKeyFile.write('%s. %s\n' % (questionNum + 1,'ABCD'[answerOptions.index(correctAnswer)]))
quizFile.close()    #试题卷文件关闭
answerKeyFile.close()    #试卷答案文件关闭

四、执行效果展示

运行代码完成后,在代码文件目录下会自动生成29个试题文件和29个对应的答案文件,每一个试卷中的题目都是随机生成,符合项目的要求。

效果如图:

 

题目展示:

答案展示:

 

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值