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

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

作者: scratch少儿编程 | 来源:发表于2019-02-21 09:39 被阅读0次

    简   介

    这里     小朋友假期作业有一项是每天做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 -*-import docximport randomfrom docx.enum.textimport WD_PARAGRAPH_ALIGNMENTfrom docx.sharedimport *from docx.oxml.nsimport qn'''#docx模块官方网站,可查询模块和函数用法http://python-docx.readthedocs.io/en/latest/'''#定义生成的页数NUMOFPAGE=25#生成一个word对象filefile=docx.Document()#设置页面的左右边界for sectionin file.sections:    section.left_margin=Inches(0.8)    section.right_margin = Inches(0.8)#k循环用于产生对应页数for kin range(NUMOFPAGE):#增加每一页的标题    para = file.add_paragraph()    run = para.add_run("100题tt日期:tt错题数:tt")#下面两行用于设置字体和字号    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)for iin range(20):for jin range(5):#随机生成一个等式,在这里借用了第一个数op1来决定加减符号            op1=int(random.randint(1,99))            op2=int(random.randint(1,99))            op="+" if op1%2==0 else "-"            if op=="+":                run=table.cell(i,j).paragraphs[0].add_run(str(op1)+op+str(op2)+"=")                run.font.size=Pt(14)                table.cell(i,j).paragraphs[0].alignment=WD_PARAGRAPH_ALIGNMENT.LEFTelse:if op1>op2:                    run = table.cell(i, j).paragraphs[0].add_run(str(op1) + op +str(op2) +"=")                    run.font.size = Pt(14)else:                    run = table.cell(i, j).paragraphs[0].add_run(str(op2) + op +str(op1) +"=")                    run.font.size = Pt(14)    file.add_page_break()#保存文件file.save("D:\math.docx")

    生成的文件如下:

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/eewlyqtx.html