1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 用python给小孩随机生成一组10以内加减法

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

时间:2020-07-15 20:27:35

相关推荐

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

一、案例背景:同事家小孩子要上小学了,准备给小孩练习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-8from docx import Documentfrom docx.shared import Ptfrom docx.shared import Inchesfrom docx.oxml.ns import qnfrom random import randrangeimport os#加载配置文件信息def load_conf(config_name):config_dic={}with open(config_name,'r') as f:lines = f.readlines()for config in lines:config_str=config.strip('\n')config_key=config_str.split('=')[0]config_value=config_str.split('=')[1]config_dic[config_key]=config_valuereturn config_dic#生成减法列表def get_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)return sub_list#生成加法列表def get_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)return add_list#生成目标列表def get_target_list(add_li,sub_li):all = add_li + sub_litarget_list=[]for i in range(int(configs_dic['page'])):random_index = randrange(0,len(all))target_list.append(all[random_index])return target_list#把目标列表写入worddef write_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 in range(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._elementr.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)

#写入wordwrite_to_word(target_list)

四附件:

1.配置文件

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

3.生成后的效果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。