效果展示:
背景需要
中班孩子需要背诵1个家长的手机号码,应对与家长失散情况下的联系(属于“社会-自我保护”的内容)
材料准备
word模板:
EXCLE模板
代码展示
'''
作者:阿夏
时间:2023年3月20日 22::3
目的:背诵家长号码-图形版-名字和班级(描字、填空、背诵、自编)
'''
import openpyxl
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
import os
import random
classroom=input('班级名称(如大1)\n')
h=int(input('11个数字需要几行?(1行)\n'))
s=int(input('随机填空需要几行?(4行)\n'))
k=int(input('空几个数字(3-5个)\n'))
print('----------第2步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\背诵家长号码\零时Word')
print('------------读取excle表单--------------')
wb = openpyxl.load_workbook(r'C:\Users\jg2yXRZ\OneDrive\桌面\背诵家长号码\家长电话号码.xlsx')# wb=用openpyxl打开存有号码的ExcelEx
phone = wb.active #phone=获取wb里面的数据
print('------------读取 学号或者姓名--------------')
N=[]
for i in list(phone.columns)[2]:# 学号-0 班级1 姓名2
phonestr = str(i.value)# 电话字符串 = 第二列的数字的值的字符串形式
N.append(phonestr)
print(N)# ['N', '1', '11', '24']
print('------------读取 班级--------------')
C=[]
for i in list(phone.columns)[1]:# 班级
phonestr = str(i.value)#
C.append(phonestr[:2]) # 不要“班”字
print(C[1:])#['CLASS', '大七班', '大七班', '大七班']
print('------------读取 学号--------------')
Number=[]
for i in list(phone.columns)[0]:# 学号
phonestr = str(i.value)#
Number.append(phonestr)
print(Number[1:])#['学']
# print('------------读取 一个手机号--------------')
Number1=[]
for i in list(phone.columns)[4]:# 第一个手机号妈妈
phonestr = str(i.value)# 电话字符串 = 第二列的数字的值的字符串形式
# print(phonestr)# 打印电话字符串
Number1.append(phonestr)
print(Number1[1:])
# ['1361', '808'] '
print('------------ 28位家长的手机号拆开成1个1个--------------')
list1=[]
list2=[]
lb=[]
# 做成str格式的单个数字
for x1 in Number1[1:]:
for x2 in x1:
list1.append(x2)
# print(list1)
# ['1', '3', '6', '3',
# 11个全部数字的基本样式
list2=[]
for a in range(int(len(list1)/11)): # 28条号码
aa=list1[a*11:a*11+11]
list2.append(aa)
# print(list2)
# print(len(list2)) # 28
# num=len(list2)
# 11个全的基本样式[['1', '3', '6',], ['1', '5', '0']]
list3=[]
for g in list2:
for i in range(h):
list3.append(g)
# print(list3)
# h等于几次 [['1', '3', '6'],['1', '3', '6'], ['1', '5', '0'], ['1', '5', '0']]
# 11个缺失填空数字
# 1-空几个空格,遍历所有可能性,并去重复
sy=[]
n2=[]
n3=[]
for i in range(11): # 索引数字['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '11']
sy.append(i)
# print(sy)
# 11个空缺的多列(不相同)的基本形
for x2 in range(len(list2)): # 28份
for x1 in range(s): # 重复5次随机抽取 空缺3格,
list2=[]
for a in range(int(len(list1)/11)): # 28条号码
aa=list1[a*11:a*11+11]
list2.append(aa)
# print(list2)
num=len(list2)
# print(x2)
n1=list2[x2] # 从list2的基本形里抽取不同位置的空缺
# print(n1)
a2 =random.sample(sy, k)
# print(a2)
for ss in range(len(a2)):
print(n1[a2[ss]])
n1[a2[ss]]= '_'
# print(n1)
# print(n1)
n2.append(n1)
# print(n2) # 50
# print(len(n2)) # 50
# [['_', '3', '6', '3'],['1', '3', '6', '3],[1', '3', '_', '3'],[['1', '3', '6', '_',],[['1', '_', '6', '_'],['1', '5', '0', '_',]……]]
# 从list3和n2中分别合并
list11=[]
list12=[]
list111=[]
list112=[]
# 先把相同[[],[]]合并在一起,,共用一套索引
for u1 in range(int(len(list3)/h)): # 20/10=2
# 11个全里面抽取2行2个2个提取
list11.append(list3[u1*h:u1*h+h])
# 11个空缺里面抽取5行5个5个提取
list11.append(n2[u1*s:u1*s+s])
# 变成【【】,【】】的样式
for p1 in list11:
for p11 in p1:
# print(p11)
list111.append(p11)
print(list111)
list1111=[]
# 变成1个数字1个数字的样式
for y1 in list111:
for y2 in y1:
list1111.append(y2)
print(list1111)
print(len(list1111))# 770
# 一组抽取2*11+5*11
list=[]
l=h+s
for j in range(int(len(list1111)/(11*l))):
list.append(list1111[j*11*l:j*11*l+11*l])
print(list)
# # list=77个一组
# print('------------ 单元格坐标--------------')
size=float(input('数字大小(48)\n'))
weight=int(input('表格宽度(11格)\n'))
height=int(input('表格长度高度(6格)\n'))
# 表格位置
bg=[]
# for x in range(0,height):
# for y in range(0,weight):
for x in range(0,l):
for y in range(0,11):
ww='{}{}'.format('%02d'%x,'%02d'%y)
bg.append(ww)
print(bg)
# ['0000', '0001', '0002', '0003', '0004', '0005', '0006', '0007', '0008', '0009', '0010', '0100', '0101', '0102', '0103', '0104', '0105', '0106', '0107', '0108', '0109', '0110', '0200', '0201', '0202', '0203', '0204', '0205', '0206', '0207', '0208', '0209', '0210', '0300', '0301', '0302', '0303', '0304', '0305', '0306', '0307', '0308', '0309', '0310', '0400', '0401', '0402', '0403', '0404', '0405', '0406', '0407', '0408', '0409', '0410', '0500', '0501', '0502', '0503', '0504', '0505', '0506', '0507', '0508', '0509', '0510']
for z in range(0,num): #多少份 28
doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\背诵家长号码\家长手机号码模板.docx')
table = doc.tables[0]
print('------------学号\班级写入,字体设置--------------')
n=N[z+1]
run=table.cell(0,4).paragraphs[0].add_run(n) # 这里的可以代表学号或者名字,把上面连接的数字改掉 姓名02 学号06 班级08
run.font.name = '黑体'#输入时默认华文琥珀字体
run.font.color.rgb = RGBColor(220,220,220) #设置颜色浅灰
run.font.size = Pt(28) #输入字体大小默认30号
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
table.cell(0,4).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
c=C[z+1]
run=table.cell(0,2).paragraphs[0].add_run(c) # 班级08
run.font.name = '黑体'#输入时默认华文琥珀字体
run.font.color.rgb = RGBColor(220,220,220) #设置颜色浅灰
run.font.size = Pt(28) #输入字体大小默认30号
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
table.cell(0,2).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
number=Number[z+1]
run=table.cell(0,6).paragraphs[0].add_run(number) # 班级08
run.font.name = '黑体'#输入时默认华文琥珀字体
run.font.color.rgb = RGBColor(250,250,250) #设置颜色浅灰
run.font.size = Pt(28) #输入字体大小默认30号
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
table.cell(0,6).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
table = doc.tables[1] # 第二个表格
# t=['微软雅黑','宋体','黑体','幼圆']
for t in range(0,int(len(bg))): # 28图案的长度为8*4=32个 遍历0-32(32个)
pp=int(bg[t][0:2]) # 提取表格bg里面每个元素的第0个数字==单元格X坐标 t=索引数字
qq=int(bg[t][2:4])
k=list[z][t] # 提取list图案列表里面每个图形 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(48)
# size) #输入字体大小默认30号
run.font.color.rgb = RGBColor(220,220,220) #设置白色空心字
# paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
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'%(z+1)))#保存为XX学号的电话号码word
from docx2pdf import convert
# docx 文件另存为PDF文件
inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/背诵家长号码/零时Word/{}.docx".format('%02d'%(z+1))# 要转换的文件:已存在
outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/背诵家长号码/零时Word/{}.pdf".format('%02d'%(z+1)) # 要生成的文件:不存在
# 先创建 不存在的 文件
f1 = open(outputFile, 'w')
f1.close()
# 再转换往PDF中写入内容
convert(inputFile, outputFile)
print('----------第4步:把都有PDF合并为一个打印用PDF------------')
# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
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/桌面/背诵家长号码/(打印合集) {}班-妈妈手机号(描摹+空格({}份{}人).pdf".format(classroom,num,num))
file_merger.close()
# doc.Close()
# # print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/背诵家长号码/零时Word') #递归删除文件夹,即:删除非空文件夹
终端运行
文件寻找
教学预设效果——描字+填空+书写+创编
活动过程:
时间:2023年2月22日 8:20-8:50
人数:27人
班级:中6班
打印说明
这一套废纸的一面印了一个小小的页眉,实际上两面大都是空白,因此这套废纸两边分别打印了两套电话号码(妈妈的、爸爸的),准备做两次背诵号码、描写号码使用。
学习过程:
学具扫描
分析:
学号 | 正面 | 反面 | 速度 | ||||||||
描字 | 连连看 | 填空 | 自编 | 自编内容 | 描字 | 填空 | 自编 | 自编内容 | 工具 | ||
1 | × | √ | √ | × | 无 | × | √ | × | 铅笔记号笔 | 0.7+0.7页描字 | |
2 | × | × | √ | √ | 父母手机号码+2023 | × | √ | √ | 父母手机号码+2023 | 铅笔记号笔 | 1.8页 |
3 | √ | √ | × | × | 无 | √ | × | × | 铅笔 | 0.7页 | |
4 | × | × | √ | √ | 父亲手机号码2次+自己的名字 | × | √ | × | 铅笔 | 1.7页 | |
5 | × | × | √ | √ | 123+爸爸手机号后面几个数字 | 未填写 | 铅笔记号笔 | 0.9页 | |||
6 | 没有来 | ||||||||||
7 | √ | × | √ | √ | 1-10 3-4之间随机填写 | √ | √ | × | 铅笔 | 1.5页 | |
8 | √ | × | √ | √ | 随机数字 | 未填写 | 记号笔 | 1页 | |||
9 | √ | × | √ | × | 无 | 未填写 | 记号笔 | 0.7页 | |||
10 | √ | × | √ | × | 1-22 随机数字 | 未填写 | 记号笔 | 1页 | |||
11 | √ | × | √ | √ | 全部是11 | 未填写 | 铅笔 | 1页 | |||
12 | √ | × | × | × | 无 | 未填写 | 铅笔 | 0.3页描字 | |||
13 | 不理解,提示一个字写一个字 | √ | × | × | 把11个全的号码描了 | 铅笔 | 0.1页 | ||||
14 | √ | × | √ | √ | 父亲手机号(部分数字随机) | 未填写 | 记号笔 | 1页 | |||
15 | × | × | √ | √ | 0-22个数字 | 未填写 | 铅笔 | 1页 | |||
16 | × | × | √ | √ | 父亲手机号3次 | √ | 铅笔记号笔 | 1.03页 | |||
17 | √ | × | √ | √ | 父亲手机号前段 | 未填写 | 记号笔 | 0.8页 | |||
18 | √ | × | × | √ | 全部是1 | √ | × | × | × | 记号笔 | 1.1页 |
19 | √ | × | × | × | 无 | √ | × | × | × | 记号笔 | 1页 |
20 | √ | √ | √ | × | 无 | 未填写 | 记号笔 | 0.7页 | |||
21 | √ | √ | √ | √ | 随便填写数字 | 未填写 | 记号笔 | 1页 | |||
22 | √ | √ | √ | × | √ | × | × | × | 记号笔 | 1.1页 | |
23 | √ | × | √ | × | 特点:从左向右写了统一列 | 未填写 | 记号笔 | 0.4页 | |||
24 | × | × | × | √ | 1-18 后面自己随意编 | √ | × | × | × | 记号笔 | 0.2页 |
25 | √ | × | √ | √ | 多个连续6、 8、1、7 | 未填写 | 记号笔 | 1页 | |||
26 | √ | × | √ | √ | 一排2 一排1 | 未填写 | 记号笔 | 1页 | |||
27 | √ | × | √ | × | 无 | 未填写 | 记号笔 | 0.5页 | |||
28 | √ | √ | √ | √ | 抄了2个爸爸手机号号码 | 未填写 | 记号笔 | 0.7页 |
数据解析:
0、1位幼儿未到园,1位幼儿不理解。两个样本删除
描字情况:第一面有7人没有描字(直接填空),19人用铅笔或记号笔对灰色数字进行描字。
连连看:最开始的时候,6位幼儿将各类相同数字进行连线游戏。教师提示后,幼儿开始描摹、填空
缺失数字填空:5位幼儿只描摹数字,没有填写任何一个空格。21位幼儿至少完成3个填空并正确
自编数据:16位幼儿在三个空行内自编数字。
类型一:父母的号码再抄写
类型二:连续数字1-20
类型三:无规律数字
类型四:重复数字
小结:幼儿自己创编的三行里,孩子写的内容:1-20的排序数字、年份、父母手机号、单个重复数字、无规律随机数字等
进度:10位幼儿跨页书写了两面的内容(父亲和母亲的号码)16位幼儿按要求完成一面的书写。
小结:从目测来看,幼儿完成量(从0.1页-1.8页)差异很大。57.14%幼儿完成一面书写,其余幼儿进行了跨页描摹、填空(没有书写自编3行)。从题量上看,11*10的书写量基本适合教学活动。
6、号码正确性,2位幼儿背的号码与打印的两个号码不符(手机号已经更新),大部分幼儿表现出对手机号码的陌生感,即使幼儿背诵的号码与打印的号码一致,幼儿第一反应还是说:这不是我爸爸妈妈的号码。
(平时幼儿只需要背,并没有机会看到这些数字的样子。经过老师逐一核对,几位聪明的孩子似乎有点看懂了)
填空正确性:23位幼儿填空时填写的数字正确,3位幼儿填空的数字不正确或者没有填空(无规律),总体来说,中班幼儿能理解照抄空缺号码的方法。未完成的孩子可能是我没有照顾到(没有一对一当面指导)
2023年3月24日
我又让孩子对另外一面手机号进行填写描画。着重对4位没有填空的孩子进行规律讲解(填空的内容和第一行的手机号码相同,可以竖着一列一列抄写同一个数字。几位幼儿很快就明白并完成至少1页填空的补全)
18号:第1次的学习结果
学号 | 第1次 | 第2次 |
18号 |
|
|
12号 |
|
|
经过第二次的手机号抄写练习,26位幼儿都初步知道了填空的内容是什么。但是幼儿书写速度有快慢(练习频率有关),因此7位幼儿并没有完全写完两面的所有内容。
感悟:
我班幼儿对家长的手机号码普遍比较陌生。需要家园配合,进行号码背诵指导。
部分幼儿能够背诵家长的手机号码,但还不能将“语音”与“数”进行有效对应(背的很快)
3.是否有手机号的经验对学习结果有影响。
(1)能背诵号码的孩子知道这些数字的用途(手机号),在完成“这份学具“时的速度快,由于会填空,所以他们不乐意再进行描字。
(2)对11个数字感到陌生的孩子,无法填空,只能听从教师指令,把已有的灰色数字进行描红(正面加反面的都描红)。
4.辐射推广:
2023年3月22日开展教学活动时,其他班级老师进教室检查自然角。中B班S老师看到孩子们在学习,对描摹数字的学具感兴趣,提出也需要这种数字字帖。
因为前期我用uibot批量提取了我园所有班级幼儿的手机号码,所以很快就能把他们班级的手机号贴到EXCEL,用Python代码批量了29份手机号码(5行描红+2行填空,因为在我班级教学后,感觉还是描红多一点比较适合中班)
2022年3月23日,这位老师用白纸打印了全部号码学具,并当面表示感谢。