首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python解决问题:生成包含加减练习题的Word文件

简 介

这里 小朋友假期作业有一项是每天做50道题的口算。之前的题目做完了,网上看到的习题集又木有合适的,再不然就是电子版本无法下载的,心想还是自己动手丰衣足食吧。

01 重点和难点

1F

安装docx模块

docx模块封装可以操作Microsoft Word文件所需要的工具。似乎该模块只可以在Windows环境下使用,而不可以在Mac OS环境下使用。安装该模块很简单。只需要在命令行模式下执行如下命令:

pipinstallpython-docx

网站:http://python-docx.readthedocs.io/en/latest/user/install.html#install

2F

分清几个概念

要想使用docx模块,需要分清word文件的组织结构。docx模块中document对象对应于word文件,paragraph对象对应于word文件中段落,run对象对应于段落中的一段一段文字。此外,和word文件中段落属于同一个级别的还有表格table对象。

02 程序代码

这段程序代码生成了一个包含25页计算题的word文件,每一页计算题包括100道加减题目。具体的看代码,里面有注释。

注:把文件拷贝到pycharm编辑器或者其他编辑器中,代码会变得容易读一些。

#!/usr/bin/python3

# -*- coding: utf-8 -*-

importdocx

importrandom

fromdocx.enum.textimportWD_PARAGRAPH_ALIGNMENT

fromdocx.sharedimport*

fromdocx.oxml.nsimportqn

'''

#docx模块官方网站,可查询模块和函数用法

http://python-docx.readthedocs.io/en/latest/

'''

#定义生成的页数

NUMOFPAGE=25

#生成一个word对象file

file=docx.Document()

#设置页面的左右边界

forsectioninfile.sections:

section.left_margin=Inches(0.8)

section.right_margin = Inches(0.8)

#k循环用于产生对应页数

forkinrange(NUMOFPAGE):

#增加每一页的标题

para = file.add_paragraph()

run = para.add_run("100题\t\t日期:\t\t错题数:\t\t")

#下面两行用于设置字体和字号

run.font.name =u"宋体"

run._element.rPr.rFonts.set(qn('w:eastAsia'),u"宋体")

run.font.size = Pt(15)

para.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

#生成一个20行*5列的表格,每一个单元格中放一个问题等式。表格的作用主要用于排版

table = file.add_table(rows=20,cols=5)

table.style.font.name ="Arial"

table.style.font.size = Pt(12)

foriinrange(20):

forjinrange(5):

#随机生成一个等式,在这里借用了第一个数op1来决定加减符号

op1=int(random.randint(1,99))

op2=int(random.randint(1,99))

op="+"ifop1%2==else"-"

ifop=="+":

run=table.cell(i,j).paragraphs[].add_run(str(op1)+op+str(op2)+"=")

run.font.size=Pt(14)

table.cell(i,j).paragraphs[].alignment=WD_PARAGRAPH_ALIGNMENT.LEFT

else:

ifop1>op2:

run = table.cell(i,j).paragraphs[].add_run(str(op1) + op +str(op2) +"=")

run.font.size = Pt(14)

else:

run = table.cell(i,j).paragraphs[].add_run(str(op2) + op +str(op1) +"=")

run.font.size = Pt(14)

file.add_page_break()

#保存文件

file.save("D:\\math.docx")

生成的文件如下:

多多机器人工作室

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180815G0HV3I00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券