这两天在学习pthon,正好遇到孩子老师布置的暑假作业,需要家长给还在出试卷,每天20题100以内加减法,8题竖式运算100以内加减法,两道应用题。手打手写真的需要不少时间,而且重复率高,随后花了点时间做了python小程序,一键生成,几秒随随便便批量生成千把张word文档。大神勿喷,正在学习中,有问题或建议请指教。
不废话了,直接上代码;
完整项目源码请这里下载,https://download.youkuaiyun.com/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的网页模板工作性质差不多。这里贴张模板图:
话不多说,也就这些,最后上个完整的代码留大家参考下。
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
生成展示:
