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

#! python3
#在指定的路径中生成指定数目的测验试卷和参考答案文本,试卷内容是测验对我国28个省级行政区的省会城市的选择,

#要求每份试题的试题顺序不同,不同试卷中相同试题的选项随机抽取。

import random
import os

# 各省及其省会的字典数据
capitals = {‘新疆‘: ‘乌鲁木齐‘, ‘甘肃‘: ‘兰州‘, ‘宁夏‘: ‘银川‘, ‘陕西‘: ‘西安‘,
            ‘青海‘: ‘西宁‘, ‘西藏‘: ‘拉萨‘, ‘贵州‘: ‘贵阳‘, ‘内蒙古‘: ‘呼和浩特‘,
            ‘山西‘: ‘大同‘, ‘山东‘: ‘济南‘, ‘河南‘: ‘郑州‘, ‘河北‘: ‘石家庄‘,
            ‘黑龙江‘: ‘哈尔滨‘, ‘吉林‘: ‘长春‘, ‘辽宁‘: ‘沈阳‘, ‘江苏‘: ‘南京‘,
            ‘安徽‘: ‘合肥‘, ‘四川‘: ‘成都‘, ‘福建‘: ‘福州‘, ‘湖南‘: ‘长沙‘,
            ‘湖北‘: ‘武汉‘, ‘广东‘: ‘广州‘, ‘广西‘: ‘南宁‘, ‘云南‘: ‘昆明‘,
            ‘海南‘: ‘海口‘, ‘台湾‘: ‘台北‘, ‘浙江‘: ‘杭州‘, ‘江西‘: ‘南昌‘}

#在 D 盘创建路径以存储测试题
quizePath = ‘D:\\测试题库\\地理库\\省会城市测试库\\‘
if not os.path.exists(quizePath):
    os.makedirs(‘D:\\测试题库\\地理库\\省会城市测试库\\‘)

#在指定文件夹下生成49份测试题和相应的参考答案

for quizeNum in range(49):
    #生成试题和答案文件
    quizeFile = open(quizePath + ‘省会测试{}.txt‘.format(quizeNum + 1), ‘w‘)
    answerKeyFile = open(quizePath + ‘省会测试答案{}.txt‘.format(quizeNum + 1), ‘w‘)

    #生成试题卷头
    quizeFile.write(‘姓名:\n\n日期:\n\n周期:\n\n‘)
    quizeFile.write(‘ ‘*23 + ‘我国省会测试题(第{}套)‘.format(quizeNum + 1))
    quizeFile.write(‘\n\n‘)

    #随机排列各省顺序
    province = list(capitals.keys())
    random.shuffle(province)

    for questionNum in range(len(capitals)):
        #创建答案和选项
        correctAnswer = capitals[province[questionNum]]
        wrongAnswers = list(capitals.values())
        del wrongAnswers[wrongAnswers.index(correctAnswer)]
        wrongAnswers = random.sample(wrongAnswers, 3)
        answerOptions = wrongAnswers + [correctAnswer]
        random.shuffle(answerOptions)

       #在试卷中写入问题和答案选项
        quizeFile.write(‘{0}、{1}的省会城市是?\n‘.format(questionNum + 1,
                                                  province[questionNum]))
        for i in range(4):
            quizeFile.write(‘{0}、{1}\n‘.format(‘ABCD‘[i], answerOptions[i]))
        quizeFile.write(‘\n‘)

        #在参考答案中写入正确答案
        answerKeyFile.write(‘%s、%s\n‘ % (questionNum + 1,
                            ‘ABCD‘[answerOptions.index(correctAnswer)]))

    #当每一份试卷和参考答案创建完毕后关闭相应的文件
    quizeFile.close()
    answerKeyFile.close()

原文地址:https://www.cnblogs.com/shanger/p/12178055.html

时间: 2024-10-28 20:32:05

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

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

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

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

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

CoreJava_线程并发(阻塞队列):在某个文件夹下搜索含有某关键字的文件

Java多线程编程是非常考验一个程序员水平的.传统的WEB程序中,因为框架提供了太多的健壮性.并发性.可靠性的支持,所以我们都是将所有的注意力放到了业务实现上.我们只是按照业务逻辑的要求,不停的积累自己的代码.因为知识,或者是经验的限制,经常出现了问题而不自知.例如,某些比较原始的项目中,并没有使用Spring等相对来说比较灵活健壮的框架.而是仅仅使用Servlet来作为服务端的实现方式. 举一个简单的栗子,众所周知,当请求到了容器,容器是创建并且启动了一个Servlet线程来对当前的请求作出相

模拟test文件下的201712{01..31}/pdf这些文件夹下都有100个pdf文件

1.模拟test文件下的201712{01..31}/pdf这些文件夹下都有100个pdf文件注意灰色部分有反引号[[email protected] ~]# cat b.sh#!/bin/bashcd /root/test && mkdir -p 201712{01..31}/pdfWJ=find /root/moban -type ffor f in find /root/test/201712{01..31}/pdf -type ddocp $WJ $f &>/dev/

Java实现读取文件夹下(包括子目录)所有文件的文件名

在编程的过程中,经常会用到对文件的读写操作等.比如,找出某一个文件夹下的所有文件名等. 下面的程序给出了,获取某一给定文件夹下所有文件的绝对路径的程序.可以作为某一个模块,在需要的时候直接使用. package src; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStrea

matlab遍历文件夹下所有图片和遍历所有子文件夹下图片

做图像处理实验,经常需要遍历当前文件下所有图片.matlab当然很早就考虑了这个问题,库函数dir就是完成这个工作的.函数返回的是一个存放所有目录下文件信息的结构体,通过遍历结构体就可以达到访问所有文件的目的了.具体实现见下面程序: imgPath = 'E:/imageData/'; % 图像库路径imgDir = dir([imgPath '*.jpg']); % 遍历所有jpg格式文件for i = 1:length(imgDir) % 遍历结构体就可以一一处理图片了 img = imre

win7基础 cmd del+*.扩展名 删除指定文件夹下的同一类型的所有文件

系统      :Windows7注意事项  :博文内容仅供参考,不可用于其他用途. 初始状态下,原文件夹内的所有文件 cmd 窗口下的指令输入 结果展示, ------------------------------------------如果您觉得博文内容有可以优化的地方,请留下评论,我会认真思考的.

find命令删除当前文件夹下N天前多类文件

find . \( -name "*.gz" -o -name "*.zip" -o -name "*.cfg" \) -maxdepth 1 -mtime +2  -exec rm {} \; 说明: 删除当前文件夹(-maxdepth 1) 2天以前的(-mtime +2) 多类文件 gz zip cfg   删除 -exec rm {} \;

删除文件夹下各级子目录中的.svn文件

建立一个文本文件,取名为removeSvn.reg(扩展名由txt改为reg),内容如下 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] @="<span style="color:rgb(0,0,0);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:12px;t