中班1位老师需要“排序类学具”供幼儿提高数能力。考虑到无法彩色打印图案,我暂时就设计一些数字、黑白图形(点、字符)的排序。针对中班年龄特点,先做《数字火车-升序1-9取5填空1》的实验
数字范围:在1-9之间,选择连续5个数字。并从中选择一个数字做填空
2、1-9连续数字:12345、23456、34567、45678、56789
以12345为例,可填空类型5个,('_2345、1_345、12_45、123_5、1234_')、所以5套连续数字一共25种组合。
素材位置
word设置
# '''
# author:阿夏
# 原理:1-9升序,抽取5个连续数字,删除1个数字做填空.
# 结果:1-9数字连续5个数字空1格,最多25种排列方法
# 时间:2023-3-6 13:31
# '''print('---------第1部分 制作题库(1-9之间升序排列的5个数字,其中有一个填空)----------')# 制作"数字+空格"
s1=[]
for i in range(1,10): # ['1', '2', '3', '4', '5', '6', '7', '8', '9']s2=' 's3=str(i) +s2 # 数字加空格s1.append(s3) # ['1 ', '2 ', '3 ', '4 ', '5 ', '6 ', '7 ', '8 ', '9 ']
print(s1)n1=[]
l2=[]
b1=[]
# 制作“填空空格"
for l1 in range(5): # 0-8 =索引9a1=s1[l1:l1+5]print(a1) # ['1', '2', '3', '4', '5']# ['2', '3', '4', '5', '6']# ['3', '4', '5', '6', '7']# ['4', '5', '6', '7', '8']# ['5', '6', '7', '8', '9']# 循环5次for b1 in range(5):for b2 in a1:print(b2)n1.append(b2) print(n1)
# ['1', '2', '3', '4', '5', '1', '2', '3', '4', '5', '1', '2', '3', '4', '5', '1', '2', '3', '4', '5', '1', '2', '3', '4', '5', '2', '3', '4', '5', '6', '2', '3', '4', '5', '6', '2', '3', '4', '5', '6', '2', '3', '4', '5', '6', '2', '3', '4', '5', '6', '3', '4', '5', '6', '7', '3', '4', '5', '6', '7', '3', '4', '5', '6', '7', '3', '4', '5', '6', '7', '3', '4', '5', '6', '7', '4', '5', '6', '7', '8', '4', '5', '6', '7', '8', '4', '5', '6', '7', '8', '4', '5', '6', '7', '8', '4', '5', '6', '7', '8', '5', '6', '7', '8', '9', '5', '6', '7', '8', '9', '5', '6', '7', '8', '9', '5', '6', '7', '8', '9', '5', '6', '7', '8', '9']# 分成5部分5组
L3=[]
for c1 in range(0,int(len(n1)/25)):c2=n1[c1*25:c1*25+25]L3.append(c2)
print(L3)
# [['1', '2', '3', '4', '5', '1', '2', '3', '4', '5', '1', '2', '3', '4', '5', '1', '2', '3', '4', '5', '1', '2', '3', '4', '5'], ['2', '3', '4', '5', '6', '2', '3', '4', '5', '6', '2', '3', '4',
# '5', '6', '2', '3', '4', '5', '6', '2', '3', '4', '5', '6'], ['3', '4', '5', '6', '7', '3', '4', '5', '6', '7', '3', '4', '5', '6', '7', '3', '4', '5', '6', '7', '3', '4', '5', '6', '7'], ['4',
# '5', '6', '7', '8', '4', '5', '6', '7', '8', '4', '5', '6', '7', '8', '4', '5', '6', '7', '8', '4', '5', '6', '7', '8'], ['5', '6', '7', '8', '9', '5', '6', '7', '8', '9', '5', '6', '7', '8', '9', '5', '6', '7', '8', '9', '5', '6', '7', '8', '9']]
print(len(L3)) # 5# 添加一个填空,组合其他部分
L4=[]
s3='_ ' # 填空的下划线“_ "(下划线+空格)
for d in range(len(L3)):for c2 in range(5):L4.append(s3) # 添加空格b1=L3[d][c2*6+1:c2*6+6]# 从索引1开始提取6个,12345变成"_23451_34512_^"for l3 in b1:L4.append(l3)
print(L4)# 分成5部分*5组=25组
L5=[]
for c3 in range(int(len(L4)/5)):b2=L4[c3*5:c3*5+5]L5.append(b2)
print((L5))
# [['_', '2', '3', '4', '5'], ['1', '_', '3', '4', '5'], ['1', '2', '_', '4', '5'], ['1', '2', '3', '_', '5'], ['1', '2', '3', '4', '_'], ['_', '3', '4', '5', '6'], ['2', '_', '4', '5', '6'], ['2', '3', '_', '5', '6'], ['2', '3', '4', '_', '6'], ['2', '3', '4', '5', '_'], ['_', '4', '5', '6', '7'], ['3', '_', '5', '6', '7'], ['3', '4', '_', '6', '7'], ['3', '4', '5', '_', '7'], ['3', '4', '5', '6', '_'], ['_', '5', '6', '7', '8'], ['4', '_', '6', '7', '8'], ['4', '5', '_', '7', '8'], ['4', '5', '6', '_', '8'], ['4', '5', '6', '7', '_'], ['_', '6', '7', '8', '9'], ['5', '_', '7', '8', '9'], ['5', '6', '_', '8', '9'], ['5', '6', '7', '_', '9'], ['5', '6', '7', '8', '_']]
# L5等于题库(不重复)print('---------第2部分 word里面的表格----------')num=int(input('生成多少份(按班级人数)\n'))
Number=int(input('随机抽取几道题目(25取20)\n'))
size=float(input('数字大小(55、word单元格字号55,行间距55磅)\n'))
weight=int(input('表格列数(2列)\n'))
height=int(input('表格行数(10行)\n'))# 表格位置
bg=[]
for x in range(0,height):for y in range(0,weight):ww='{}{}'.format(x,y)bg.append(ww)
print(bg) 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,timeimport 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 RGBColor# 新建一个”装N份word和PDF“的临时文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\排序数字\零时Word')for z in range(0,num): #多少份 # list=[] # [[],[],[]]的样式 doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\排序数字\数字排序模板10乘2.docx') # for b in range(0,2): # 每份多少张table = doc.tables[0] # 一共有1个表格 list=random.sample(L5,Number) # 10print(list) for t in range(0,len(list)): # 图案的长度为8*4=32个 遍历0-32(32个)pp=int(bg[t][0]) # 提取表格bg里面每个元素的第0个数字==单元格X坐标 t=索引数字qq=int(bg[t][1])k=list[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(size) #输入字体大小默认30号run.font.color.rgb = RGBColor(200,200,200) #数字小,颜色深0-255# paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距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'%(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(num))
file_merger.close()
# doc.Close()# # print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/排序数字/零时Word') #递归删除文件夹,即:删除非空文件夹
终端输入参数
输出单元格坐标
从题库25题中随机抽取20题
删除过渡零时文件
合并PDF所在位置
PDF内容每页都不同,即使有相同的5个数字,空缺的位置也不同。
打印效果展示
时间:2023年3月6日 15:00-15:20
班级:中3班
人数:20人
1、自主书写学号
2、1-9数字的序列,缺失数字填空
3、描画灰色数字,数字书写工具练习
“哇,这里连连看吗?”中1班孩子看到我拿出来的一刀数字纸,兴奋起来,“好多数字啊!”
教学活动中,我强调了学号的书写,然后稍微讲解了缺失数字的填写方法:“从1念到9”
“如果不知道要写什么,就用铅笔、记号笔把灰色数字描一下,变黑色。”
一、群体描字
最初孩子们都不了解题型要做什么,但2/3孩子能够理解“画数字”的意思,就提笔开始从左上角、右下角开始对灰色数字进行描字。
二、教师指导
我随机对一组中写的最快的孩子进行指导:
“你看,这里有个空,缺了什么数字?”
“……”孩子沉默
“34多少67”
“……”
“34567,这个空写5”
他把数字写上去,
“这个234,1234后面是数字几?“
“……”
“23456.这里空就是6,写上去吧”
示范了2-3次,男孩子就理解了,指着下一道题,“这里是写2吗”
“对了,12345!”
三、互相观摩
(一)理解题目的孩子:每组总有见过、做过升序数字填空的孩子,他们完成填空的速度很快,
(二)不理解只描字的孩子:同组的孩子就会张望观摩他们的行为,由于座位倒置,所以同组孩子一般也看不懂结题原理。只是观摩。实在看不懂,就继续埋头描画灰色数字了。
(三)顿悟的孩子:有5位孩子描了几道数字后,突然顿悟了“老师,这里是不是3”“这里是6吗?”“这里写7,对吗”。“真聪明!是的”我大大鼓励后他们继续填写自己会填写的空。
(1)空格的位置对填写结果的影响。如果第一个数字是空,孩子们很难填写,如果空格在2-5位(索引1-4)),60%的孩子能够根据口诀(123456789)朦胧地猜测升序排列的数字。
(2)孩子不知道如何书写某个数字。“……3456789,9我不会写!”一位男孩嘀咕道,我立刻在作业纸的其他位置找到了一个9,“9在这里,你照着画一下”
(四)完成的孩子。不少理解题型的孩子很快就完成了填空题。我劝他们“再把灰色数字描一描,练练手。”
(1)不描字:有一位男孩坚决摇头拒绝“我不想画”“好吧,那就放到作业袋吧”。
(2) 描字: 其他男孩女孩基本都听我的提示,回到座位上继续用记号笔、铅笔描灰色字。以至于15分钟后一位女孩好不容易描完所有数字,拿着整页的黑色数字让我拍照时,大大的感叹:“写的我手都快断了!”
(3) 代练:一位完成的男孩把作业放回作业袋,喝完水回到座位上无所事事,就开始观察周围的同伴。他主动对身边的同桌男孩说:“这里是5,这里写7”,两人互相讨论几句,同桌主动把作业纸递给他,“你帮我!”“好的”速度快的男孩就直接在他的作业上飞速地答题,做了5题后,同桌似乎有点看懂了,把作业要了回去,尝试自己填写,由于速度慢,速度快的男孩又在旁边指点江山,惹得同桌有些烦躁:“我会了,你不要说!”
(4)代做:很快这位速度快的男孩又看到对面的同伴似乎有些困难,他立刻招呼对方是否需要自己的帮助,这一次对面的男孩同样把作业交给他,然后看着速度快的男孩帮他把填空全部完成(垂直状态,估计也),表示感谢,收回了自己的作业纸,认真欣赏了一会儿。请老师拍照。
(五)书写姿势。有一位男孩的捏笔手势不正确(握拳抓笔),虽他然也非常努力用铅笔描画了部分灰字,但线条虚浮(几乎看不出画过)。考虑到年龄关系、手指肌群发育不完善、练习少等情况,我稍微指导他正确的手势,可是孩子很快又调整回抓笔的手势。
从书写内容来看,他用铅笔东一字、西一个字跳着随机描画不同位置的灰色数字,由于之前的某一题答案是8,所以他在后面所有空缺的格子里,坚定地反复写8——处在数字练习巩固的阶段。
四、其他文字
1、你帮我名字!一位女孩写完后吵着要让老师帮他写大名:“老师帮我写的名字DXY”。我用铅笔把她的三个汉字名字写在学号位置上(因为她把学号写在班级位置上了),“那个记号笔把你的名字描一下吧”
2、我会写名字!女孩同组男孩看到她在描名字,也不甘示弱“我会写我的名字!”他用铅笔也在学号的位置上开始一笔一划地写他的名字“WBY”,因为他的座位里作业袋架子很近,很快几位放好作业的男孩过来微观他书写名字,满脸羡慕。
3、书写班级号:几位男孩的头凑在一起,我一看,其中一位在作业纸的一个1上加了一个方块,变成了“中字”,产生了“中_345”效果。“哈哈,你们是中1班,其实中班是写在最上面”。我稍微讲解一下,一位男孩就立刻提笔在自己作业纸的顶部,班级的位置写了“1中”的字样。明显可以看到他早就有书写班级号的经验。
五、总体感悟:
幼儿人力资源:需要幼儿中的学科带头人,成为同伴观摩的对象。有一位孩子能理解,就成为同组其他孩子的观摩对象。一定程度解决教师人力指导资源不足的问题。
学具中的灰色:“描字”可以让“不会做”的孩子有事可做,也可以让“快”的孩子精益求精(“磨时间”)一定程度解决能力水平差异产生的“时间差”问题,有助于安全、时长的把控。
幼儿自我学习:在幼儿已有的数序列认知经验(念诵1-10)基础上,不少孩子是在自我的观察中顿悟到填空的方法。在得到教师、同伴的肯定后,他们很快就在20题中挑选有把握的题目进行答题。
教师提示指导:教师会主动对没有填空的孩子进行指导,除了几位基础的孩子可以3次左右给反馈,大部分孩子不见得会立刻理解并做出反馈,而教师能分给他们的时间也就不到1分钟。因此大部分情况下,孩子还需要大量观摩同伴的作业,与同伴沟通交流,观看同伴为自己做作业……等方式,初步理解“升序5填空1”的做题原理。
在使用”索引数字替换空格,列表抽取5个数字、只生成25题“的代码之前,我是用“随机数字生成大量题目并去重复set(200题)随机抽取大量题目,去重后留下25题”的方法。
这个代码的缺点
运行时间长,每一次选取题目都要经历200次抽取,再去掉重复
list有升序和降序时,抽取的所有内容正序和倒叙都混在一起,抽取的题目正序和倒叙数量不等。
所以我才不想用随机数生成并替换,而改成索引数字替换。
# 以下制作25题题库(不重复题目)
list1=['123456789','987654321']# 被抽取序列
cc=['04','40']# 索引位置
l1=[]
for num in range(1,num+1):# 做出所有基本的25题题库,做成'4 '样式for ww in range(len(list1)): # 循环2套题目 for i in range(200): # 生成尽可能多地题目,便于去重s=random.randint(0,4) # 1-4之间的随机数# print(s) # 1234之间的随机数 3list_five=list1[ww][s:s+5] # 从list里随机抽取连续五个数字23456、678910 # print(list_five) # 45678 3和3后面5个数字 cc1=int(cc[ww][0]) # 从CC选择第0组的第1个数字0cc2=int(cc[ww][1]) # 从cc选择第0组的第2个数字4s1=int(list_five[cc1])s2=int(list_five[cc2])# print(s1, s2) # 抽取45678的第一个4 最后一个8r=random.randint(s1,s2) # 再4-8之间随机抽取一个数字替换成“_”下划线# print(r) # 4-8之间随机抽了一个6 c= list_five.replace('{}'.format(int(r)),'_') # # 把6变成整数 替换成'_'="45_78"m.append(c) # 把抽取出来的"45_78"添加到数组 ['12_45', '4_678', '2345_']# 替换成带数字+空格的e=' ' # 空格j=[] for w in m: # 从去重的n里面 加上空格# print(w)for z in w:f=z+e# print(f) # ['5 ', '6 ', '7 ', '8 ', '_ ', '1 ', '2 ', '_ ', '4 ', '5 ']j.append(f)print(j)# 变成5个一组for r in range(int(len(j)/5)):y=j[5*r:5*r+5]a.append(y) print(a) print(len(a)) # [['5 ', '_ ', '7 ', '8 ', '9 '], ['6 ', '5 ', '_ ', '3 ', '2 ']]# 25题 题库完成: # 去重n= list(set(j)) # 随机抽取几百题可能会题目重复, 一种去重的方法,用list,所以列表list要用其他名字.,print('正序最大不重复数目{}'.format(int(len(n)/2)))rst=int(len(n)) # 一共50个,正序25条,逆序25条
print(n)