一、案例背景:同事家小孩子要上小学了,准备给小孩练习10以内加减法,为了解决出题的烦恼,希望我用python帮他实现,并保存到word里。近期在学习python,就当练手了,以后我们家娃也能用。代码简单,讲一下思路,后面直接贴源码了。不足之处,各位自行优化。最后用pyinstaller生成.exe时,遇到打包之后找不到default.docx,是项目最大的收获了。解决方法是:

doc = Document(docx=os.path.join(os.getcwd(), 'default.docx')) 用本地的default.docx,这个文件可以在安装python-docx的目录搜索。

二、实现思路:

0.读取配置文件选项range=10(加减法范围) page=45(要生成加减法数量,一页正好可以写45个,总共155,也可以全部生成),配置文件保存目录./conf/conf.ini

1.遍历生成10以内所有加法和减法

2.把生成的加法和减法按page=45,生成目标列表

3.把目标列表随机写到word上,供小孩练习

三、核心代码:

#!/usr/bin/env python#coding: utf-8

from docx importDocumentfrom docx.shared importPtfrom docx.shared importInchesfrom docx.oxml.ns importqnfrom random importrandrangeimportos#加载配置文件信息

defload_conf(config_name):

config_dic={}

with open(config_name,'r') as f:

lines=f.readlines()for config inlines:

config_str=config.strip('\n')

config_key=config_str.split('=')[0]

config_value=config_str.split('=')[1]

config_dic[config_key]=config_valuereturnconfig_dic#生成减法列表

defget_sub_list():

sub_list=[]for x in range(int(configs_dic['range'])):for y in range(x+1):

sub_item=str(x) + "-" + str(y) + "="sub_list.append(sub_item)returnsub_list#生成加法列表

defget_add_list():

add_list=[]for a in range(int(configs_dic['range'])):for b in range(int(configs_dic['range'])):

add_item=str(a) + "+" + str(b) + "="add_list.append(add_item)returnadd_list#生成目标列表

defget_target_list(add_li,sub_li):

all= add_li +sub_li

target_list=[]for i in range(int(configs_dic['page'])):

random_index=randrange(0,len(all))

target_list.append(all[random_index])returntarget_list#把目标列表写入word

defwrite_to_word(target_list):

row_size=int(len(target_list)//3)

left_target_list=target_list[:row_size]

middle_target_list=target_list[row_size:row_size*2]

right_target_list=target_list[row_size*2:]#打开文档

document = Document(docx=os.path.join(os.getcwd(), 'default.docx'))#加入标题

document.add_heading(u'10以内加减,加强练习',0)#添加文本

for i inrange(row_size):

paragraph=document.add_paragraph()#设置中文字体

run = paragraph.add_run(left_target_list[i]+" "+middle_target_list[i]+" "+right_target_list[i]+" ")

run.font.name=u'宋体'run.font.size= Pt(20)

r=run._element

r.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')#保存文件

document.save(u'加减.docx')if __name__ == '__main__':

#读取配置文件信息,range=10 范围,page=45,每页算术个数

config_name='./conf/conf.ini'configs_dic=load_conf(config_name)

#生成加、减法列表

add_li=get_add_list()

sub_li=get_sub_list()

#生成目标列表,45个

target_list=get_target_list(add_li,sub_li)

#写入word

write_to_word(target_list)

四附件:

1.配置文件

2.default.docx 要copy到工作目录,不然生成exe是无法正常使用。

3.生成后的效果:

python加法例子_用python给小孩随机生成一组10以内加减法相关推荐

  1. 用python给小孩随机生成一组10以内加减法

    一.案例背景:同事家小孩子要上小学了,准备给小孩练习10以内加减法,为了解决出题的烦恼,希望我用python帮他实现,并保存到word里.近期在学习python,就当练手了,以后我们家娃也能用.代码简 ...

  2. python索引例子_谈谈python中的索引

    最近以python为工具,取代VBA处理工作中Excel遇到的小问题,我觉得其优点:一是语言更清爽友善,因为VBA的语言一来IDE难用,语法风格不大气优雅(我个人的见解):二是,我一直怀疑Excel对 ...

  3. python加法例子_第二讲 做加法的例子

    # Django Step by Step (二) ## 1 引言 随着学习,我们的例子也开始复杂了,下一步我想实现一个简单的 web 加法器.界面会是这样: ![](https://img.kanc ...

  4. python语言例子_【Python】SimPy的使用示例-Go语言中文社区

    使用SimPY进行离散事件仿真 SimPY是一个Python下的第三方库,可以方便的进行离散事件的仿真.仿真速度比较快.下面记录一下我的一点心得,不保证完全正确,供参考. 安装 $ pip insta ...

  5. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  6. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  7. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

  8. python编程口诀_少儿Python编程中的算术与技巧

    在儿童Python中,使用数值进行基本运算的情况很常见.加.减.乘.除都是内置的.加法和减法通过+和-号执行. 在Python shell提示中可以输入基本的算术表达式,将它当作一个计算机来使用.像计 ...

  9. python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合

    本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...

最新文章

  1. php从内存中获取源码_【PHP7源码分析】PHP内存管理
  2. python程序将其重复M个字符N次
  3. 神策数据加入中国大数据产业生态联盟,神策营销云及融媒解决方案获联盟认证
  4. POJ 1584 A Round Peg in a Ground Hole 判断凸多边形,点到线段距离,点在多边形内
  5. Linux Centos7网络属性配置
  6. iOS应用内付费(IAP)开发步骤列表
  7. 蓝牙Bluetooth技术手册规范下载【转】
  8. Maven的单元测试插件maven-surefire-plugin详解
  9. ACM用N个正方体来建造金字塔问可以建造多少层
  10. 小巧Linux发行版本,老机器也不愁
  11. windows 无法停止ics_x64仿真功能加入 ARM版Windows即将获得大量的应用程序
  12. Smack Extensions用户手册
  13. 机械优化设计c语言鲍威尔法,机械优化设计鲍威尔法.docx
  14. 电脑控制手机 易语言也可以实现颜色比较功能哦
  15. 勒索病毒代码python_一份勒索病毒解密工具的整理汇总
  16. 【20220912】电商业务的核心流程
  17. getmonth_日期getMonth()方法以及JavaScript中的示例
  18. 2022牛客多校9 BTwo Frogs(概率DP)
  19. 【jpa】简介和项目生成、API-初级入门
  20. 如何提升自己的打字速度?

热门文章

  1. 软件开发基础知识(1)
  2. 精灵图与字体图标的使用
  3. java双人游戏_Java 简易双人坦克游戏实现
  4. 《惢客创业日记》2018.11.02(周五) “追梦大叔”的回忆
  5. Historic Exhibition 贪心
  6. spacemacs配置
  7. java.sql.SQLException: 无法转换为内部表示原因及解决办法
  8. python 导入模型_scikit-learn系列之如何存储和导入机器学习模型
  9. 如何防止中国菜刀后门泄露webshell地址
  10. Dubbo 2 Dubbo 概述 2.1 Dubbo 概念 2.2 Dubbo 架构