图片展示:

背景需求:
突然接到通知,明天下午临时去带小2班。
小班刚入园的孩子,能给他们提供什么样的可操作的学具呢?
思来想去,还是让生成一份学号字帖,让幼儿熟悉自己的学号,让我也熟悉幼儿的名字和学号
材料准备:
描字写(学号、名字)非常实用,所以我已经写了很多很多个WORD模板了。
为了区分,这一次又建了一个文件夹 20230913小班学号描字帖。

包含素材:

WORD模板样式

EXCEL名单样式

代码展示:
1.py位置


2.代码段
'''
作者:阿夏
时间:2023年9月13日
A4横版两人,每人三行
'''
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 qn
# hs=int(input('一行2个,需要几行(1行,还有6行是表格)\n'))
print('----------第1步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word')
wb= xlrd.open_workbook(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\20230913小班学号描字帖\学生名单.xlsx") #打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的,很详细,英语不好的可以百度翻译,翻译出来的结果差不多。
sheet=wb.sheet_by_index(0)   #通过索引的方式获取到某一个sheet,现在是获取的第一个sheet页,也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')
col1=sheet.col_values(0)# 学号
col3=sheet.col_values(1)# 班级
col2=sheet.col_values(2)# 名字
num=len(col1)-1  # 第一列去掉第一行
# for z in range(0,num):   #多少份  
# list=[]
# nb=[]
# nb2=[]
numberall=[]
# 生成 基本组:“学号+名字“
for num in range(1,len(col1)):
   
    name00=col2[num]     #吧学号和名字拼在一起, 张三
    numberall.append(name00)
    name01=col3[num]     #吧学号和名字拼在一起, 张三
    numberall.append(name01)
    # print(name00)
    for x in range(13):
        number=int(col1[num])     #吧学号和名字拼在一起, 张三
        numberall.append(number)
print(numberall)
# 一个数组【】
# 切开25人 一人15个数字
list1=[]
for fk in range(int(len(numberall)/15)):    # 一共15格子
    list1.append(numberall[fk*15:fk*15+15])
# print(list1)
# print(len(list1))
list=[]
for r in range(int(len(list1)/2)):
    list.append(list1[r*2:r*2+2])
print(list)
print(len(list))
# 25个数组【】
#单元格坐标
bg=[]
for x in range(3):
    for y in range(5):
        z2='{}{}'.format(x,y)
        bg.append(z2)
# ['00', '01', '02', '03', '04', '10', '11', '12', '13', '15', '20', '21', '22', '23', '24']
for n in range(int(num/2)):
    doc = docx.Document(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\20230913小班学号描字帖\小2班描字帖.docx")
    for b in range(2):
        table = doc.tables[b] 
        # print(p)
        for t in range(len(bg)):    # 0-15
            # print(list[t])
                        
            pp=int(bg[t][0])     # 提取表格bg里面每个元素的第0个数字==单元格X坐标  t=索引数字
            qq=int(bg[t][1]) 
            k=list[n][b][t]
            # f=font[t]   
            print(pp,qq,k)
            run=table.cell(pp,qq).paragraphs[0].add_run(str(k))    # 在单元格0,0(第1行第1列)输入第0个名字
            run.font.name = '楷体'  #输入时不同字体
            run.font.size = Pt(55)  #输入字体大小80或68号
            run.bold=True
            run.font.color.rgb = RGBColor(200,200,200) #设置颜色10%黑色=深灰
            r = run._element
            r.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学号的零时word  
    from 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 convert
print('----------第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/桌面/描字帖/(打印合集)小2班描字帖练习册({}份).pdf".format(num))
file_merger.close()
# doc.Close()
# # print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/零时Word') #递归删除文件夹,即:删除非空文件夹`
终端运行
不用输入参数,直接运行
成果位置

PS:在无数的教学实践后,我发现学前孩子的镜像视力(单字或多个字的左右颠倒、上下颠倒)非常普遍,终于无可奈何放弃了'%02d'%i——1-9前面不补0。


学具裁切


幼儿操作:
时间:2023年09月14日 下午14:20-14:35
班级:小2
人数:21人?
第一步:玩纸游戏


(折纸)反复对折成小块



一位男孩折了纸飞机(小班年龄不容易)

卷纸(圆筒)

1位男孩撕纸练习

第二步:书写
抓笔、捏笔(两种握笔手势)


绘画内容——线条涂鸦



然后模仿同伴行为,进行涂鸦线条
 
 
绘画行为——圈画数字




加粗线条的画框




数字上的短线条






标准数字书写(家里练过,有丰富经验)







7号幼儿根据样例,模仿画了4个7。







总结分析:
1、幼儿第一次接触学号纸学具,我带领他们探索纸条玩法(我示范了卷圆筒、对折的方法),幼儿模仿折叠。一位男孩自己折叠长条形飞机
2、幼儿书写能力——5位女孩在家有过数字书写经验,描线的速度、力度、质量高。其余幼儿一开始不知道要干什么,观摩同伴行为后,部分尝试用记号笔操作(包括长短线条涂鸦、描线、画几何图案、涂抹、圈画等)、1位幼儿什么也没有做。
感悟:
20230914第一次在小班做python学具试验——学号字帖。经过长期的Python学具投放,我对幼儿各种各样的玩法和画法,都能够心平气和的接受了,每个孩子的手部技能练习是循序渐进发展起来的。
同时也感慨:刚入学的孩子,就自然而然出现多种状态,产生能力分层。
| 序号 | 现象 | 预设 | 
| 1 | 5位小班孩子已经能够正确握笔和书写 | 超过预期 | 
| 2 | 只有1位孩子撕纸,其他孩子都没有撕,小班孩子手指大动作练习撕纸 | 超过预期 | 
| 3 | 半数幼儿线条涂鸦 | 符合预期 | 
| 4 | 幼儿书写姿势(抓笔)手指肌肉控制 | 符合预期 | 
| 5 | 幼儿圈画行为(普遍) | 不在预设内 | 
| 6 | 数字线条加粗,把数字涂抹成黑色(非普遍) | 不在预设内 | 
没想到几位小班孩子已经能够正确握笔和书写,三位孩子还描了名字,其水平超出预期。只有1位孩子撕纸,这也超出我的设想(小班孩子手指大动作练习,男孩普遍就是撕纸),不少孩子都喜欢圈画数字,这是后续设计小年龄幼儿学具的一个思考元素(练习线条控制)
……
基于幼儿不同的能力水平,教师可以设计相应的“巩固学习材料”“提升学习材料”,让每位幼儿在操作感知中,掌握更多的“样式规律”,熟悉数字的用途(
(发纸的时候,我报学号,幼儿反应不强烈,但是我报孩子的第一个名字,小朋友就纷纷说说这个孩子的全名。
了解后,这个班级每天点名时报学号和名字,幼儿的茶杯、小床上也有大大的学号数字图案,所以很多孩子对数字有声音和图像的印象,拿到纸就说:这是22,我就是22号。我是8号。





















