首页 > python教程

python实现某考试系统生成word试卷

时间:2021-07-18 python教程 查看: 705

本文实例为大家分享了python实现某考试系统生成word试卷的具体代码,供大家参考,具体内容如下

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

准备条件

1.试题excel信息,存放在名为data.xls的excel文件中

2.安装python依赖的模块信息

pip install xlrd
pip install  python-docx

提示:以下是本篇文章正文内容,下面案例可供参考

编码实现

#!/bin/bash env python
import xlrd
import  random
from  docx import  Document
from docx.shared import Pt, RGBColor
from docx.enum.text import  WD_ALIGN_PARAGRAPH

#打开excel
data = xlrd.open_workbook('data.xls')
#获取工作表
sheet = data.sheet_by_index(0)

class Question:
   pass
def create_question():
   question_list = []
   for i in range(sheet.nrows):
       if i>2:
             #创建试题类
             question = Question()
             question.ID = sheet.cell(i,0).value
             #添加试题的题目信息
             question.subject = sheet.cell(i,1).value
             #添加题目类型
             question.question_type = sheet.cell(i,2).value
             #添加试题选项
             question.option = []
             question.option.append(sheet.cell(i, 3).value)  # A
             question.option.append(sheet.cell(i, 4).value)  # B
             question.option.append(sheet.cell(i, 5).value)  # C
             question.option.append(sheet.cell(i, 6).value)  # D
             #添加分值
             question.score = sheet.cell(i,7).value
             question_list.append(question)
   #将试卷题目随机打乱并且返回
   random.shuffle(question_list)
   return question_list

def create_papper(file_name,paper_name,question_list):
    #创建一个文档对象
    document = Document()
    #设置页眉的位置信息
    section = document.sections[0]
    header = section.header
    p1 = header.paragraphs[0]
    p1.text = paper_name
    #设置页脚信息
    footer = section.footer
    p2 = footer.paragraphs[0]
    p2.text = '内部试题,禁止泄露'
    #写入试卷基本信息
    titile = document.add_heading(paper_name,level=1)
    #设置对齐方式
    titile.alignment = WD_ALIGN_PARAGRAPH.CENTER
    #添加一个段落
    p3 =  document.add_paragraph()
    p3.add_run('姓名:____')
    p3.add_run('班级:____')
    p3.alignment =  WD_ALIGN_PARAGRAPH.CENTER
    #写入试题信息
    for i,question in enumerate(question_list):
        subject_paragraph = document.add_paragraph() #添加一个段落
        run = subject_paragraph.add_run(str(i+1)+str(question.subject)) #添加题目信息
        run.bold = True #设置加粗
        subject_paragraph.add_run('【%s】分'%str(question.score))
        #打乱选项的顺序
        random.shuffle(question.option)
        for index,option in enumerate(question.option):
            document.add_paragraph(('ABCD')[index]+str(option))
    #保存试题
    document.save(file_name)
    return

if __name__ == '__main__':
    question_list = create_question()
    #循环生成100份试卷
    for item in range(1,100):
        create_papper('2021第'+str(item)+'套内部考试试题.docx','2021第一季度内部考试',question_list)
    print('over')

实现效果

总结

该案例综合使用了xlrd模块和python-docx模块的一个读写练习

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持python博客。

展开全文
上一篇:pytorch常用数据类型所占字节数对照表一览
下一篇:python print()函数的end参数和sep参数的用法说明
输入字:
相关知识
Python 实现图片色彩转换案例

我们在看动漫、影视作品中,当人物在回忆过程中,体现出来的画面一般都是黑白或者褐色的。本文将提供将图片色彩转为黑白或者褐色风格的案例详解,感兴趣的小伙伴可以了解一下。

python初学定义函数

这篇文章主要为大家介绍了python的定义函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助

图文详解Python如何导入自己编写的py文件

有时候自己写了一个py文件,想要把它导入到另一个py文件里面,所以下面这篇文章主要给大家介绍了关于Python如何导入自己编写的py文件的相关资料,需要的朋友可以参考下

python二分法查找实例代码

二分算法是一种效率比较高的查找算法,其输入的是一个有序的元素列表,如果查找元素包含在列表中,二分查找返回其位置,否则返回NONE,下面这篇文章主要给大家介绍了关于python二分法查找的相关资料,需要的朋友可以参考下