python批量生成word文档,批量生成试卷。

    这两天在学习pthon,正好遇到孩子老师布置的暑假作业,需要家长给还在出试卷,每天20题100以内加减法,8题竖式运算100以内加减法,两道应用题。手打手写真的需要不少时间,而且重复率高,随后花了点时间做了python小程序,一键生成,几秒随随便便批量生成千把张word文档。大神勿喷,正在学习中,有问题或建议请指教。

不废话了,直接上代码;

完整项目源码请这里下载,https://download.csdn.net/download/zhangbin0103/11463429

计算机题函数:

# 获取计算题
def jisuan():
    a = random.randint(1, 100)
    b = random.randint(1, 100)
    if a + b <= 100:
        print("%s + %s =  " % (a, b))
        nums_n = "%s + %s = " % (a, b)
    elif a - b < 0:
        print(" %s - %s =  " % (b, a))
        nums_n = "%s - %s = " % (b, a)
    else:
        if a > b:
            print("%s - %s =  " % (a, b))
            nums_n = "%s - %s =  " % (a, b)
        else:
            if a + b > 100:
                print(" %s - %s =  " % (b, a))
                nums_n = "%s - %s =  " % (b, a)
            else:
                print("%s + %s =  " % (a, b))
                nums_n = "%s + %s =  " % (a, b)
    return nums_n

应用题函数:这里需要说明一下,应用题是从网上复制下来导入mysql数据库的,用pyghon对查询操作,因为总共是274条应用题,所以随机函数设定为274,计算题做了修正,有没有费代码段,也不想去深究了,保证能计算不会超过100或小于0即可。

# 获取应用题
def yy_def():
    re = random.randint(1, 274)

    # 获取连接
    conn = pymysql.connect(host="localhost",
                           db="nums",
                           user="root",
                           password="Zlkj1234",
                           port=3306,
                           charset="utf8")
    # 获取游标
    cur = conn.cursor()
    print(cur)
    # SQL 查询语句
    sql = "SELECT * FROM YY \
           WHERE ID = %s" % re
    try:
        # 执行SQL语句
        cur.execute(sql)
        # 获取所有记录列表
        results = cur.fetchall()
        print(results[0][1])
        yy = results[0][1]
    except:
        print("未获取到")
    cur.close()
    conn.commit()
    conn.close()
    print('sql执行成功')
    return yy

word模板需要特别说明下,用的第三库是docxtpl,找了好久这个不错,建立好模板,对应的数据向里面填充即可,向Django的网页模板工作性质差不多。这里贴张模板图:

python批量生成word文档,批量生成试卷。_第1张图片

话不多说,也就这些,最后上个完整的代码留大家参考下。

import random
# 导入pymysql模块
import pymysql

from docxtpl import DocxTemplate
from docxtpl import InlineImage

from docx.shared import Mm,Inches,Pt
import datetime


# 获取应用题
def 上段源码

# 获取计算题
def 上段源码

ii = 1
aa = 1
i = 1
n_zd = {}
yy_zd = {}
timu_yy = {}
while aa <= 60:

    while i <= 28:
        n_key = "n%s" % i
        print(n_key)
        n_zd[n_key] = jisuan()
        print(n_zd)
        i += 1

    while ii <= 2:
        y_key = "y%s" % ii
        print(y_key)
        yy_zd[y_key] = yy_def()
        print(yy_zd)
        ii += 1

    aa_key = "t1"
    timu_yy[aa_key] = aa
    data_dic = {**timu_yy, **n_zd, **yy_zd}
    print(data_dic)
    doc = DocxTemplate('tpll.docx')   # 加载模板文件
    doc.render(data_dic) #填充数据
    # doc_name = "数学暑假作业%s" % aa + datetime.datetime.now().strftime('%Y%m%d%H%M') + ".docx"
    doc_name = "./数学/数学暑假作业%s.docx" % aa
    doc.save(doc_name) #保存目标文件
    aa += 1
    i = 1
    ii = 1

生成展示:

python批量生成word文档,批量生成试卷。_第2张图片

python批量生成word文档,批量生成试卷。_第3张图片 标题

 

你可能感兴趣的:(python,python操作mysql查,python随机生成计算题,python操作word模板)