上学期我为大班孩子写过一套“随机门牌号“填空的学具(6层3间、9层5间),留有部分剩余的学具张。昨天给中6班的孩子看看这种坐标样式”题型“,做一次口头的“门牌号”经验摸底。
0、”猜猜怎么玩?“中班孩子们全部一脸懵逼,无人应答。“好多数字!”“我看到房子!”
1、教师询问每层房间的数量,楼层的高度,第一梯队的孩子能够回答(由于灰色的字,后排的孩子好像看不清楚,不回答)
2、教师带领幼儿点数并念诵正确的房间号,2/3幼儿与老师一起按照从左到右顺序念诵门牌号101、102、103、104、105.201.202.,他们是按序念数,所以出现了106、107、406、606的不存在数字。
3、24号孩子开小差,我请他上台填空,随机抽取1层、9层,他能够按顺序念出每层5个3位数号码(我哥哥教过我的)
4、”你家住在几零几室“,这回参与的孩子多了,大约有12位举手。(24人半数)
”我家在501“
”我家是601“
”我住在2楼,我还有个房子在5楼“
”我家是28号,我住在二楼(几号房间)不知道“
“我家也是6楼,(几零几)摇头“
“我想起来了,我家在202.”
……
分析:
1、半数孩子有自家房间楼层的认知,但不全面(仅知道楼层)另外半数幼儿对门牌三位数无认知经验。
2、念诵声音较大的几位孩子有一定的三位数排序经验,但真正书写起来也有困难(孩子可以自主写1-2数字可以),其余孩子虽然跟着按序念诵了,但完全不理解意义的,根本无法自主填空。(预估:填空的难度普遍大)
3、在不熟悉“门牌号”题型的情况下,这套”灰色描字+自主书写填空“的门牌号学具并不适合中班幼儿。
原有样式:word模板里有全部门牌号,随机抽取门牌号数字,并遍历文档进行删除:
上次大班的“门牌号”学具是在docx模板内预先填写了30个门牌号,然后随机抽取15个数字删除。由于docx内部的门牌号是手动输入,导致了两个605的错误,使得随机删除时出现重复,学具中的空格数量有差异(15、16、20的空格都出过)。
改良代码: 随机抽取数字并替换原有列表,直接输入到docx空表里。
本次采用是从全部门牌号的列表中,随机抽取几个门牌号,然后把它替换成空格。既不用在docx模板中预先做好所有门号,也提高了门牌号的精确度(不会出现重复的门牌号数字)
上次大班“门牌号”都是自主填空类型的(自主填空+描字+绘画)
本次考虑到中班幼儿的普遍数经验、书写水平(镜像、歪斜),还是把“答案”也写出来,供幼儿做黏贴匹配。
因此“抽取的数字=random.choice(list,number)”的结果也要写入第2个表格里
# '''
# author:阿夏
# 原理:门牌号5*6=30.抽取15个空格,第二个表格里面装15个空格的内容(剪下来贴在空格里).
# 结果:门牌号 黏贴版(适合中班)
# 时间:2023-3-31 13:31
# '''
import random
# print('---------第2部分 word里面的表格----------')
num=int(input('生成多少份(按班级人数)\n'))
Number=int(input('随机抽取几个数字(大于:20,等于15,小于5,满屏:0)\n'))
size=float(input('数字大小(42)\n'))
height1=int(input('房间表格高度(6层)\n'))
weight1=int(input('房间表格宽度(5间)\n'))
height2=int(input('贴纸的高度(层 大于:3,等于3,小于1,满屏:0)\n'))
weight2=int(input('贴纸的宽度(间 大于:5,等于5,小于5,满屏:0)\n'))
# 房间表格位置
bg1=[]
for x1 in range(height1-1,-1,-1): # 表格第1行是601\602,最下面一行时101 102,所以索引要从大到小 height1=6需要减去1=5,0需要再减去1 =-1 (50 51------00 01)
for y1 in range(0,weight1):
ww1='{}{}'.format(x1,y1)
bg1.append(ww1)
print(bg1)
# ['50', '51', '52', '53', '54', '40', '41', '42', '43', '44', '30', '31', '32', '33', '34', '20', '21', '22', '23', '24', '10', '11', '12', '13', '14', '00', '01', '02', '03', '04']
# 表格位置
bg2=[]
for x2 in range(0,height2):
for y2 in range(0,weight2):
ww2='{}{}'.format(x2,y2)
bg2.append(ww2)
print(bg2)
print('---------第3部分 word单元格内写入随机抽取题目,批量N份word,并转为pdf----------')
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
from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor
# 新建一个”装N份word和PDF“的临时文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\黏贴门牌号\零时Word')
for z in range(0,num): #多少份
# 制作"房间号"
N=[]
for x in range(1,height1+1):
for y in range(1,weight1+1):
s1='{}{}'.format(x,'%02d'%y) # 数字加空格
N.append(s1)
print(N)
# ['101', '102', '103', '104', '105', '201', '202', '203', '204', '205', '301', '302', '303', '304', '305', '401', '402', '403', '404', '405', '501', '502', '503', '504', '505', '601', '602', '603', '604', '605']
# 从门牌列表中,随机抽取15个数字
C=random.sample(N,Number)
print(C)
doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\黏贴门牌号\黏贴门牌号模板(6层5间).docx')
# 房间模板(第一个表格)把抽取的房间号替换成_
B1=[]
for tt in range(len(N)):
for a2 in range(len(C)):
if N[tt]==C[a2]:
N[tt]=' '
for a5 in N:
B1.append(a5)
N.clear()
print(B1)
# 房间模板(第一个表格)要写入的门牌号列表
table = doc.tables[0]
for t1 in range(0,len(bg1)): # 图案的长度为8*4=32个 遍历0-32(32个)
pp1=int(bg1[t1][0]) # 提取表格bg里面每个元素的第0个数字==单元格X坐标 t=索引数字
qq1=int(bg1[t1][1])
k1=B1[t1] # 提取list图案列表里面每个图形 t=索引数字
print(pp1,qq1,k1)
run=table.cell(pp1,qq1).paragraphs[0].add_run(k1) # 在单元格0,0(第1行第1列)输入第0个图图案
run.font.name = '微软雅黑'#输入时默认华文彩云字体
run.font.size = Pt(size) #输入字体大小默认30号
run.font.color.rgb = RGBColor(200,200,200) #数字小,颜色深0-255
# paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')#将输入语句中的中文部分字体变为华文行楷
table.cell(pp1,qq1).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
# 黏贴纸条的表格(第二个表格)
table = doc.tables[1]
for t2 in range(0,len(bg2)): # 图案的长度为8*4=32个 遍历0-32(32个)
pp2=int(bg2[t2][0]) # 提取表格bg里面每个元素的第0个数字==单元格X坐标 t=索引数字
qq2=int(bg2[t2][1])
k2=C[t2] # 提取list图案列表里面每个图形 t=索引数字
print(pp2,qq2,k2)
run=table.cell(pp2,qq2).paragraphs[0].add_run(k2) # 在单元格0,0(第1行第1列)输入第0个图图案
run.font.name = '微软雅黑'#输入时默认华文彩云字体
run.font.size = Pt(size) #输入字体大小默认30号
run.font.color.rgb = RGBColor(200,200,200) #数字小,颜色深0-255
# paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')#将输入语句中的中文部分字体变为华文行楷
table.cell(pp2,qq2).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(Number,height2*weight2,height1,weight1,num))
# file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/黏贴门牌号/(打印合集)黏贴门牌号(空格{}等于卡片{}){}乘{}({}份).pdf".format(Number,height2*weight2,height1,weight1,num))
# file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/黏贴门牌号/(打印合集)黏贴门牌号(空格{}小于卡片{}){}乘{}({}份).pdf".format(Number,height2*weight2,height1,weight1,num))
file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/黏贴门牌号/(打印合集)黏贴门牌号(没有空格 共{}){}乘{}({}份).pdf".format(height1*weight1,height1,weight1,num))
file_merger.close()
# doc.Close()
# # print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/黏贴门牌号/零时Word') #递归删除文件夹,即:删除非空文件夹
参数设置:
参数设置:
(因为卡片多了,所以选择这款学具的孩子需要进行卡片分类(6开头的数字摆在一堆))
参数设置:
(这款空缺数字2/3,难度很大,选这款学具的孩子,教师可在其遇到困难时稍作进行提示
预判高手:27号、24号)
参数设置:
特别说明
1、特殊孩子会用铅笔记号笔描字,如果写的很快,就做2份,确保幼儿参与课堂活动。
2、无法理解“5格黏贴”的孩子,拿一张描字版学具,在描数字过程时也能有事可做,并对正确答案混个“眼熟“”。
一、教师解说学具
二、幼儿预判自己的能力,选择相应的学具(4款,数量有限,先到先得)
三、教师跟踪指导。
四、完成速度的控制(磨时间)
1、鼓励完成的孩子对灰色数字进行描字
2、或者选择自己家的门牌号(做记号:涂色、打钩、圈出来),如果6*5格里面没有这个门牌号,自行在屋顶上书写。
3、各种屋顶装饰或者房间单元格内部装饰(人物、动物)
4、选5格的孩子会有两条“”空单元格“”白纸,鼓励幼儿自行创意玩法(写数字,文字、图形)