效果展示——统计图+米罗线条画
实际在中班操作,没有姓名,只有学号
教学要求:
0、写学号
1、涂色:把相同图案涂成一种颜色
2、连线:用一根线条连接同一个图案(米罗星月夜风格》
3、统计:图案涂色+记录数量
4、核对:数量的答案在反面(现在还没有做这个代码)
背景需求:
中大班最常用一种数学习——数相同的图案数量,统计记录总数。
将6*4横版连连看的代码微调,就实现了需要的效果。
WORD表格制作(在纵向A4)
普通输入(不需要用页眉)
第2个
代码设计:
'''
作者:阿夏
时间:2022年11月13日
图案统计数量+米罗线条画 6*6*6(A4竖版)
'''
import os
num=int(input('生成多少份\n'))
Number=int(input('几个图案(6个)\n'))
size=int(input('图案大小(8*2 建议46)\n'))
height=int(input('表格长度(6格)\n'))
weight=int(input('表格宽度(6格)\n'))
print('----------第1步:提取所有图案------------')
list=['○','◇','□','△','▽','☆','☼','☺','☾','◎']
print(len(list))# 一共24个图案
print('----------第2步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\统计数量\零时Word')
print('----------第3步:随机抽取8个不重复的图案 ------------')
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
for z in range(0,num): #多少份
# word = gencache.EnsureDispatch('Word.Application')
doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\统计数量\统计数量模板.docx')
# 第1个表格
table = doc.tables[0]
# 先随机抽取8个一列
all=[]
n = random.sample(list, Number) # 24个里面随机抽取6个图案 输入到指定格子
print(n)
for s1 in range(0,int(weight*height)):
s2=str(random.choice(n))
print(s2)
all.append(s2)
print(all)
print(len(all))
# 确定8*4表格的表格单元格坐标(如第1行第1格是0,0 ,第2行第3格是(1,2)
bg1=[]
for x in range(0,height):
for y in range(0,weight):
ww1='{}{}'.format(x,y)
bg1.append(ww1)
print(bg1)
# ['00', '01', '02', '03', '04', '05', '06', '07', '10', '11', '12', '13', '14', '15', '16', '17', '20', '21', '22', '23', '24', '25', '26', '27', '30', '31', '32', '33', '34', '35', '36', '37']
# 提取表格单元格坐标和图形的坐标
for t1 in range(0,len(all)): # 图案的长度为8*4=32个 遍历0-32(32个)
pp1=int(bg1[t1][0]) # 提取表格bg里面每个元素的第0个数字==单元格X坐标 t=索引数字
qq1=int(bg1[t1][1]) # 提取表格bg里面每个元素的第1个数字==单元格Y坐标 t=索引数字
k1=all[t1] # 提取all图案列表里面每个图形 t=索引数字
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) #设置颜色浅灰
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
table.cell(pp1,qq1).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
bg2=[]
# 第2个表格
table = doc.tables[1]
bg2=[]
for x in range(0,3):
for y in range(0,3,2): # ['00', '02', '10', '12', '20', '22']
ww2='{}{}'.format(x,y)
bg2.append(ww2)
print(bg2)
# 提取6个图案的长度
for t2 in range(0,len(n)): # 图案的长度为8*4=32个 遍历0-32(32个)
pp2=int(bg2[t2][0]) # 提取表格bg里面每个元素的第0个数字==单元格X坐标 t=索引数字
qq2=int(bg2[t2][1]) # 提取表格bg里面每个元素的第1个数字==单元格Y坐标 t=索引数字
k2=n[t2] # 提取all图案列表里面每个图形 t=索引数字
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) #设置颜色浅灰
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(height,weight,num))
file_merger.close()
# doc.Close()
# # print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/统计数量/零时Word') #递归删除文件夹,即:删除非空文件夹
重点说明:
终端运行
10个空心图案随机抽取6个
第一个表格6*6内容的的写入
第二个表格统计4*2内容的的写入
效果再显示——随机抽取6个图案,每个图案出现数量不等
教学活动展示
时间:2022-11-22 15:00-15:30
班级:中3班
人数:26人
1、找相似图案、勾边、涂色、连线
2、点数数量——数数有几个同色同款图形
3、幼儿说:“我要先连连看,然后再涂颜色”
4、“老师,看我找到了6个”
“我写了3,有3个三角形”
5、蜡笔、记号笔的综合 使用(勾边或涂色、连线)
6、用黑色记号笔连线
7、图案有边框的效果更突显
8、把记号笔黑色作为一种涂色的颜色
9、黑线多了就密密麻麻了。
10、记号笔和蜡笔连的线条交叉较少,画面看上去整洁。
11、记号笔勾边、连线,图案相对清晰了
如果涂色了应该更容易区别图形。
12、我已经算好了(数量),我不想连线!——涂色精准性强(没有超出范围),点数正确。
作品分析:(26人,实收25人26张,缺一份)
幼儿从左到右、从上到下,查找相同的图形,然后连线涂色、涂色连线、勾边连线涂色
(1)完成涂色的数量:11位幼儿涂完所有的图案颜色。11位幼儿涂完50%的图案颜色。 2位幼儿涂了不超过10个图案,2位幼儿涂黑
(2)连线工具及颜色:12位幼儿用记号笔黑色连线,9位幼儿用蜡笔彩色连线、2位没有连线(1位不会画连线、1位表示不需要连线)、2位涂黑、
黑色记号笔连线
蜡笔同色连线
(3)图案记号笔勾边:5位幼儿用记号笔对灰色图案进行勾边,让图案看上去外形更明显。
(4)图案数量统计:14位幼儿在统计表内写了数字(无论是否正确),其中9位幼儿写满了6个格子(无论是否正确)、7位幼儿写了1-3个格子(无论是否正确)
由于很多原始灰色图案的形状被蜡笔涂色遮盖,或者被勾边线条重新改变外形,或者被加黑色连线彩色连线干扰实现。所以很难真的数出幼儿是否统计正确。因此这里进行核对。
《米罗星空图》的创想
幼儿园曾经开展过一个《米罗-星空》的集体教学活动,幼儿将各种圆点用线条连接起来(流星划过)。
当我把《图形数量统计图》的图形用不同颜色线条连接起来后,感觉有几分像《星空》哦!
来看看中班孩子们对6款图形的涂色及连线组成的《星空》图吧!
感悟:
1、利用Python随机抽取重复图形的代码,可以在6*6单元格内随机分布各种图形。通过涂色和连线,可以组成不同的颜色的连线。组成抽象画作。
2、从画面效果看,黑色记号笔连线比蜡笔连线更醒目,中性色(黑色)线条让散状分布的图形产生连接,实现“点、线”、”红黄绿黑白“结合的画面效果。
3、从统计角度来看,彩色蜡笔连线有助于幼儿通过彩色连线分别寻找到图案相同的图形。
4、有一位幼儿说自己可以不用连线,就能数清楚数量。
后续思考:
(1)过多的连线线条,对与幼儿找寻图案数量也有干扰(5位幼儿只画了两2-3种图案的连线,更多的就看不清楚了。)——6*6变成5*5,4*4,图案变大,连线减少,更便于统计。
(2)图案有点小,不少幼儿涂色容易到外圈。涂色练习少的男孩受不了这种精细操作,直接记号笔把整块涂鸦了。但是他们也知道自己画的不好看,因此都偷偷藏到抽屉里,或要求直接拿回去。——6*6变成5*5,4*4,图案变大,便于幼儿大面积涂色。
(3)提示数字的用途:主要用途——提示不记得0-9的数字怎么画的幼儿根据这些提示写统计里的图案总数。
1)学号参考:实际教学中,两位幼儿不会画学号,我就圈出“统计旁边的相应数字,提示他们照着抄画。但2位幼儿依旧不知如何抄,要求老师帮助,最后老师握着他们的手,他们才画出数字——练的少,缺乏自信,还不敢抄学号。
2)计数参考:对于一些会写数字,但不记得数字外形的孩子来说,统计旁边的数字有一定的提示参考作用(教师提示幼儿去抄某个数字),幼儿自己看了一组数字也不知道哪一个是自己需要的数字(用处不大),需要老师指定正确数字才敢抄写。
3)描画需求:有1位女孩用记号笔把整页上所有的灰色数字、汉字都描了一遍(第一行抬头、第三行的统计1234567890),描画小的字体也是一种练习手臂肌肉的好方法。
---end-----