成品样式:

每个孩子3页A4横板,供6次书写

打印样式:

背景需求:

前期进行6次的Python学具教学活动,对中3班幼儿书写学号和名字的情况评估:

 筛选出10位需要练习学号的幼儿。

学号、名字需要持续性、强化性练习,才能形成肌肉记忆。我需要为幼儿做几套学号描字贴。

word表格设置

竖版,页边距:上下左右0.7CM

6个格子中间必须有空行。

边框线1磅

学号数字的大小,数字在单元格内上下左右居中对齐

EXCLE设置:

表格放在第一个

一共10个人的学号书写不规范(镜像字、字形难以辨认、完全不会写等)

代码发布:

为了缩减长度,这个代码我研究很久,理论上还可以更精炼。但目前水平就这样了。


'''
作者:阿夏
时间:2022年12月17日
名称:中3班不会写名字的孩子练习学号)
'''import xlwt
import xlrd
import os
import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块import os,time
import docx
from docx import Document
from docx.shared import Pt
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qnfrom docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColorwb= xlrd.open_workbook(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\学生名单.xlsx") #打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的,很详细,英语不好的可以百度翻译,翻译出来的结果差不多。
sheet=wb.sheet_by_index(0)   #通过索引的方式获取到某一个sheet,现在是获取的第一个sheet页,也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')
col1=sheet.col_values(0)# 学号
col2=sheet.col_values(1)# 名字
num=len(col1)-1  # 第一列去掉第一行list=[]
# 生成 基本组:“学号“
for i in range(1,len(col1)):# for d in range(8):name='{}'.format (int(col1[i]) )    #学号list.append(name)
print(list)# 32个名字# 单元格坐标
# zb=['35','46','55','68','44','79']
zb=['34','45','54','67','43','78']# 6个表格所有的table[bg]
bg=[]for i in range(0,len(zb)):# print(i)for x in range(0,int(zb[i][1])):        # 行for y in range(0,int(zb[i][0])):            #列bg.append('{}{}'.format(x,y))
# print(len(bg))
# # 162
# print(bg)
# ['00', '01', '02', '10', '11', '12', '20', '21', '22', '30', '31', '32', '00', '01', '02', '03', '10', '11', '12', '13', '20', '21', '22', '23', '30', '31', '32', '33', '40', '41', '42', '43', '00', '01', '02', '03', '04', '10', '11', '12', '13', '14', '20', '21', '22', '23', '24', '30', '31', '32', '33', '34', '00', '01', '02', '03', '04', '05', '10', '11', '12', '13', '14', '15', '20', '21', '22', '23', '24', '25', '30', '31', '32', '33', '34', '35', '40', '41', '42', '43', '44', '45', '50', '51', '52', '53', '54', '55', '60', '61', '62', '63', '64', '65', '00', '01', '02', '03', '10', '11', '12', '13', '20', '21', '22', '23', '00', '01', '02', '03', '04', '05', '06', '10', '11', '12', '13', '14', '15', '16', '20', '21', '22', '23', '24', '25', '26', '30', '31', '32', '33', '34', '35', '36', '40', '41', '42', '43', '44', '45', '46', '50', '51', '52', '53', '54', '55', '56', '60', '61', '62', '63', '64', '65', '66', '70', '71', '72', '73', '74', '75', '76']# 把zb做成索引数量
# 第一次,X*Y=Z
# zb=['34','45','54','67','43','78']
zb1=[]
zb1.append(0)
for t in range(len(zb)):b=int(zb[t][0])*int(zb[t][1])zb1.append(b)
print(zb1)
# zb1=[0, 12, 20, 20, 42, 12, 56]# 第二次:反复相加
zb2=[]
# zb1= [0, 12, 20, 20, 42, 12, 56]
for m in range(1,len(zb1)+1):zb2.append(sum(zb1[:m]))
print(zb2)
# zb2=[0, 12, 32, 52, 94, 106, 162]#  第三次,提取两个索引数字
bg_all=[]xx = zb2[0:len(zb2)-1]
yy = zb2[1:len(zb2)]
zz= dict(zip(xx,yy))
# print(bg_all)
# zz={0: 12, 12: 32, 32: 52, 52: 94, 94: 106, 106: 162}# 6套坐标索引分割开来
for k,v in zz.items():    # 提取键key(第一个)值value(第二个)print(k,v)g=bg[int(k):int(v)]# print(g)bg_all.append(g)
print(bg_all)
[['00', '01', '02', '10', '11', '12', '20', '21', '22', '30', '31', '32'], ['00', '01', '02', '03', '10', '11', '12', '13', '20', '21', '22', '23', '30', '31', '32', '33', '40', '41', '42', '43'], ['00', '01', '02', '03', '04', '10', '11', '12', '13', '14', '20', '21', '22', '23', '24', '30', '31', '32', '33', '34'], ['00', '01', '02', '03', '04', '05', '10', '11', '12', '13', '14', '15', '20', '21', '22', '23', '24', '25', '30', '31', '32', '33', '34', '35', '40', '41', '42', '43', '44', '45', '50', '51', '52', '53', '54', '55', '60', '61', '62', '63', '64', '65'], ['00', '01', '02', '03', '10', '11', '12', '13', '20', '21', '22', '23'], ['00', '01', '02', '03', '04', '05', '06', '10', '11', '12', '13', '14', '15', '16', '20', '21', '22', '23',
'24', '25', '26', '30', '31', '32', '33', '34', '35', '36', '40', '41', '42', '43', '44', '45', '46', '50', '51', '52', '53', '54', '55', '56', '60', '61', '62', '63', '64', '65', '66', '70', '71', '72', '73', '74', '75', '76']]size=[72,60,67,48,86,36]# # # font=['楷体','楷体','楷体','隶书','华文新魏','华文彩云','方正姚体','幼圆']# 8种字体print('----------第1步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word')
# doc= docx.Document(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字贴\打印合集描字贴.docx")# 新建Wordfor n in range(0,num):    # 一共多少份doc = docx.Document(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\中3班不会写学号的孩子的描字帖练习册.docx")for t in range(0,len(bg_all)):table = doc.tables[t]   for p in range(0,int(len(bg_all[t]))):# 一共有9个表格pp=int(bg_all[t][p][0])     # 提取表格bg里面每个元素的第0个数字==单元格X坐标  t=索引数字qq=int(bg_all[t][p][1]) # f=font[t]        # 字体格式k=list[n]               # 从4名字里提取名字\ss=size[t]print(pp,qq,k)run=table.cell(pp,qq).paragraphs[0].add_run(k)    # 在单元格0,0(第1行第1列)输入第0个名字run.font.name = '楷体'  #输入时不同字体run.font.size = Pt(ss)  #输入字体大小80或68号run.font.color.rgb = RGBColor(200,200,200) #设置颜色10%黑色=深灰r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), '楷体' )#将输入语句中的中文部分字体变为华文行楷table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.docx'.format('%02d'%n))#保存为XX学号的零时wordfrom docx2pdf import convert# docx 文件另存为PDF文件inputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.docx".format('%02d'%n)# 要转换的文件:已存在outputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.pdf".format('%02d'%n)  # 要生成的文件:不存在# 先创建 不存在的 文件f1 = open(outputFile,'w')f1.close()# 再转换往PDF中写入内容convert(inputFile, outputFile)from docx2pdf import convertprint('----------第4步:把都有PDF合并为一个打印用PDF------------')import os
from PyPDF2 import PdfFileMerger
target_path =  'C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/零时Word'
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
pdf_lst.sort()
file_merger = PdfFileMerger()
for pdf in pdf_lst:print(pdf)file_merger.append(pdf)
# file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/(打印合集)大班A整页描字帖2乘5加表格-4名字-({}人).pdf".format(num))
file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/(打印合集)中3班不会写学号的孩子的描字帖练习册({}份).pdf".format(num))
file_merger.close()
# doc.Close()# # print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/零时Word') #递归删除文件夹,即:删除非空文件夹`

重点说明:

提取学号,因为日常幼儿写字不会在个位数字前加0,加上模板里用了单元格分割数字位置,所以1-9可以用单个数字展示。这里就不用‘%02d'%i来补全两位数

手动输入6个表格

把6个表格的坐标数字都提取在一起

重点1:因为每个表格里面的数量不同,因此需要反复提取索引值,确定每个表内的填入数量

运用items提取键值(第1、2个索引数字) 生成[[],[],[]]的列表样式

写入6个表格的各个单元格

保存

学具展示及制作:

不会写的幼儿描字练习:

2022年12月16日,中3班只有8人,向中3班发放10份描字帖,只有2位幼儿在园进行书写,其余本子都放在幼儿抽屉里。待幼儿返园后练习(每天半页)

感悟:

1、有字帖是基础,指导要跟上

光为幼儿提供字帖还不够,必须要指导幼儿对字形进行结构理解,书写笔画的练习。

(9号写着写着,9的竖条变短了,自己写学号时,字形歪斜厉害)

(17号对粗体字进行反复涂色,加粗1的的线条。自己写学号时,7没有弯斜。)

2、不等表格数量,测试获成功

前期我在《像素数字卡片》里实验了多表格等量单元格的数字写入。

本次6个表格的单元格数量都不同,因而我花了5天反复调整代码,想用遍历方式实现多表格不等量单元格的数字写入,顺利实现缩短代码的目标。

学无止境!

由于新冠疫情,上海发布通知2022年12月19日开始幼儿不再入园,我也没有实验对象了,因此学具设计暂时告一个段落,研究方向转向对前期案例的整理撰写,为小课题研究做好基础性资料。

【教学类-23-01】20221217《不会写学号的中班幼儿的学号描字贴》(中班描字)相关推荐

  1. 【教学类-19-03】20221127《ABBABB式-规律排序-A4竖版2份》(中班)

    展示效果: 单人使用样式: 单页打印样式 ​ 背景需求: 中班幼儿需要掌握ABBABB的排序规律 前文制作了ABCABC单元格色块,完全套用ABC排序word表格,调整python的代码,随机生成AB ...

  2. 【教学类-19-02】20221127《ABCABC式-规律排序-A4竖版2份》(中班)

    展示效果: 单人使用样式: 单页打印样式 ​ 背景需求: 中班幼儿需要掌握ABCABC的排序规律 ​ 前文制作了ABAB单元格色块,微调word表格的列数,调整python的参数,随机生成ABC排序样 ...

  3. 【教学类-24-01】20230306《数字火车-升序1-9取5填空1》(中班《玩具总动员》)

    成果样式: 背景需求: 中班1位老师需要"排序类学具"供幼儿提高数能力.考虑到无法彩色打印图案,我暂时就设计一些数字.黑白图形(点.字符)的排序.针对中班年龄特点,先做<数字 ...

  4. 【教学类-12-03】20221106《连连看横版8*4(2套题目 适合中班))(中班主题《我们的城市》)

    效果展示 背景需求: 前期制作了<连连看8*4-不重复16个)<连连看12*4-不重复24个) 问题分析: <连连看8*4-不重复16个)<连连看12*4-不重复24个)采用的 ...

  5. 【教学类-32-01】十二生肖1.0版(绘画+手工+排序+分类+玩牌)(中班:偏科学-数)

    作品展示 背景需求--从数字到图片 最佳孩子们做Python纸类(数学)的频率比较高.但都是数字类(加减法.门牌号.火车箱.电话号码等)我想翻新花样,设计新的内容,就想到了水果图片.动物图片. 百度图 ...

  6. 【教学类-34-05】拼图(彩色图片+圆角凹凸拼图)3*4格子(中班主题《个别化拼图》偏美术)

    图片展示: 背景需求: 最近班级孩子得了传染病,来了2位孩子. 我觉得:人少的话,孩子们就有充足的时间去拼那些带有凹凸槽的自制彩色图形拼图. 难点: 1.从直线剪切(方形拼图)转向圆弧剪切(凹凸拼图) ...

  7. 【教学类-22-01】20221207《八款字体的描字帖-2*4格横条-用订书机》(中班描字)

    成品样式: 80号字(适应2-3个名字的大小) 68号字(适应4个名字大小(2-3个名字也可以用,字会很小)) 打印样式: 背景需求: 前期进行多次的Python学具教学活动,对中3班.大1班幼儿书写 ...

  8. 【教学类-29-02】20230402《门牌号-黏贴版打印数量调查教学实践(6层*5间)》-(中班《我爱我家》偏数学)

    背景需求 前文介绍了门牌号黏贴版的制作过程,及4款分层学具的参数设置.但是我很快又发现了两个问题 [教学类-29-01]20230401<门牌号(6层*5间)-黏贴版(中班<我爱我家> ...

  9. 【教学类-09-02】20221022《动物棋10*10 S形迷宫》(数字续写和骰子游戏)(大班主题《动物花花衣》)

    效果展示: 背景需求: [教学类-09-01]20221022<动物棋>的排列方式是10*10矩阵(每行都是从小到大升序排列)从游戏棋的角度出发,它并不是一条线连贯的路线.游戏时需要&qu ...

最新文章

  1. Flink升级到1.4版本遇到的坑
  2. xampp mysql 端口被占用_xampp安装后apache 80端口被占用的解决方法
  3. JFinal之学习资源
  4. shell脚本中的坑
  5. App设计灵感之十二组精美的插画引导页设计案例
  6. 光磁记录实现数据冷存储
  7. telnet实现本地回显
  8. 二叉树经典题之将二叉树分层打印
  9. mvc:annotation-driven /注解意义(转)
  10. springMVC_08文件上传
  11. JAVA 编程 练习题
  12. 4.凤凰架构:构建可靠的大型分布式系统 --- 透明多级分流系统
  13. Mac如何拷贝文件到移动硬盘
  14. Vue中在线引用iconfont图标
  15. java Ofd 转图片_OFD文件怎么转换成图片格式
  16. Use Eager execution or decorate this function with @tf.function.
  17. 交换机路由器命令大全
  18. Gos —— shell程序
  19. 投影仪亚马逊审核标准FCC认证
  20. 【数据库】国土空间规划数据库(全域)_模板空库

热门文章

  1. python爬取百度天气接口【实战记录】
  2. 人类刚给火星送去Linux系统,以及一款安卓手机芯片
  3. 中国人民银行面试题目(经典题目2)
  4. No compiler is provided in this environment. Perhaps you are run
  5. 田蕴章书法讲座《每日一题,每日一字》(2) 文字整理 ——火字、必字与书法笔顺
  6. 利用Photoshop通道制作BMP格式的透明图标
  7. OGRE粒子系统脚本详解
  8. win10设置了睡眠时间,但两分钟无操作仍然黑屏。解决办法
  9. sim卡没坏但苹果手机无服务_苹果6sp无服务信号不好解决办法
  10. Es6箭头函数详细用法