【教学类-13-01】20221112《数字色块图5*7*9-A4竖版》(中大班主题《》)

 效果展示

 打印效果:(浅蓝色打印纸)

 背景需求:

     掌握了word表格单元格插入列表的方法,我想进一步制作“单元格色块填充”的“色盲图”

但是纵向20*26格填色,发现设计一个填色图案需要很长时间,且单一图案无法随机生成更多的样式,同时大量数字密集,幼儿填色时容易伤眼睛、遗漏

 于是我想到把格子拆分成小块

 小格子里就可以制作一些幼儿熟悉的图案——数字

  

WORD表格制作(在纵向A4)

页眉写入个人信息

 分栏

 表格参数 

 两个表格中间的段落间距 

代码设计:

'''

作者:阿夏
时间:2022年11月11日数字像素图(A4竖板5*7 9个表)
(A4竖排5*7*9 每套两个数字涂成不同的颜色 ))
'''

import os,random

num=int(input('生成多少份\n'))
Number=int(input('抽取几个数字(10个中取9个=9个)\n'))
size=float(input('数字大小(最大28,建议25)\n'))
weight=int(input('表格宽度(5格)\n'))
height=int(input('表格长度高度(7格)\n'))

print('----------第1步:提取所有图案------------')

import random
# m数字位置上的数字


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):   #多少份  

    m=str(random.randint(0,5)) # 涂色部分数字和非涂色部分数字不能一样
    n=str(random.randint(5,9)) # 涂色部分数字和非涂色部分数字不能一样

    N=[]
    def same():
        for r in range(0,len(nn)):
            nn1=int(nn[r][0])
            nn2=int(nn[r][1])
            for nnn in range(nn1,nn2):
                N.append(n) 

            mm1=int(mm[r][0])
            mm2=int(mm[r][1])
            for mmm in range(mm1,mm2):
                N.append(m)
    # print(N)

    # 数字1 的坐标位置列表值
    nn=['06','04','04','04','03','06']
    mm=['02','01','01','01','03','00']
    same()

    # 数字2 的坐标位置列表值
    nn=['06','04','02','02','04','06']
    mm=['03','01','03','01','03','00']
    same()

    # 数字3 的坐标位置列表值
    nn=['06','04','02','04','02','06']
    mm=['03','01','03','01','03','00']
    same()

    # 数字4 的坐标位置列表值
    nn=['06','01','02','01','02','01','02','03','06']
    mm=['01','01','01','01','01','01','04','01','00']
    same()

    # 数字5 的坐标位置列表值
    nn=['06','02','04','04','02','06']
    mm=['03','01','03','01','03','00']
    same()

    # 数字6 的坐标位置列表值
    nn=['06','02','04','02','01','02','06']
    mm=['03','01','03','01','01','03','00']
    same()

    # 数字7 的坐标位置列表值
    nn=['06','04','04','04','04','06']
    mm=['03','01','01','01','01','00']
    same()

    # 数字8 的坐标位置列表值
    nn=['06','02','01','02','02','01','02','06']
    mm=['03','01','01','03','01','01','03','00']
    same()

    # 数字9 的坐标位置列表值
    nn=['06','02','01','02','04','02','06']
    mm=['03','01','01','03','01','03','00']
    same()

    # 数字0 的坐标位置列表值
    nn=['06','02','01','02','01','02','01','02','06']
    mm=['03','01','01','01','01','01','01','03','00']
    same()

    Nall=[] # [[],[],[]]的样式

    for aaa in range(0,int(len(N)/int(weight*height))):    # 把35*9个数字,分割成35一组,35一组,一共10组(0-9)
        aaaa=(N[aaa*int(weight*height):aaa*int(weight*height)+int(weight*height)])
        Nall.append(aaaa)
    print(Nall)
    nine=random.sample(Nall,Number)
    print(nine)

    doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\像素图\数字像素图模板.docx') 

    for numbg in range(0,len(nine)): # [[],[],[]]的样式的索引数字
    #     print(num1)
        NUMnum=nine[numbg]
        print(NUMnum)      

    #  确定8*4表格的表格单元格坐标(如第1行第1格是0,0 ,第2行第3格是(1,2)   
        bg=[]
        for x in range(0,height):
            for y in range(0,weight):
                ww='{}{}'.format(x,y)
                bg.append(ww)
        print(bg)      
    
    # ['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']
    # 提取表格单元格坐标和图形的坐标
    
        table = doc.tables[numbg]          # 一共有9个表格        

        for t in range(0,len(NUMnum)):             # 图案的长度为8*4=32个    遍历0-32(32个)
            pp=int(bg[t][0])     # 提取表格bg里面每个元素的第0个数字==单元格X坐标  t=索引数字
            qq=int(bg[t][1])
            k=NUMnum[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) #设置颜色浅灰
            # cell.text =u""
            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(weight,height,num))
file_merger.close()
# doc.Close()

# # print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/像素图/零时Word') #递归删除文件夹,即:删除非空文件夹

重点说明:

终端运行

 输入单元格的数字,随机取值(两个不能相同)

确定“数字”的构成位置:

 以数字1为例:N列表里先提取空白的6个,再添加蓝色的2个、再添加4个空白、1个蓝色、4个空白、1个蓝色、4个空白、1个蓝色、3个空白、3个蓝色、6个白色、0个蓝色(一共12个 2组)

根据索引数量,逐一获取需要生成的空白的数量、蓝色的数量,将随机出来的空白填写数字和蓝色填写数字按照指定数量添加到N列表中

把N列表(一共35*10个数字)分割程35个数字的10组。[['','',''],['','',''],['','','']]的样式。

random.sample 从10组中随机抽取9组(打乱出现顺序,少一个数字组)

 从[['','',''],['','',''],['','','']]中抽单独的取NUMnum=['','','']

 关键点:

效果

效果再显示——0-9随机抽取9个数字,排序打乱

做两套题目(大1班、中3班、都试试教学效果),有无需要继续改进的地方。

 

幼儿学习及作品展示

时间:2022-11-14 15:00-15:30

班级:中3班

人数:23人

  

  

 

 

 

 

 

 

 

 

作品分析: 

数字填色图(A4 5*7 9个)
时间#### 班级中3班 人数23人问题
学号完成数量外圈内部数字数字纯涂色其他说明汇总
39740内部用蓝线 外部红色快 
4000832单单个格子涂色,不同的色点“我不会写学号”  8和3外形也相似、
50559全部是5,幼儿只涂粉红(虽然下面涂色粉和橙色。线条状有白点两个数字都是5,无法涂两种
 000959黑、白、蓝、红、紫、绿、橙、粉、黄  线条状 
60659全部是5,幼儿只涂粉红(虽然下面涂色粉和蓝色)涂色饱满56数字外形太相近
76红、灰、橙、红、绿、黑绿、黄、粉、蓝、蓝、黄530外圈、内部都涂了色块,从下向上涂。涂色饱满53数字外形太相近
84红、蓝、绿、黄粉、红、蓝、橙810从上向下 涂色饱满 
9        
10000915紫、绿、多色点状混、深绿、浅绿(下面预设8=橙 16=浅蓝 
149红、橙、绿、黑、紫、红、黄、红、红蓝、蓝、黄、红、绿、橙、橙、黄、黑950完全涂色了4个,5个定好色彩轮廓线和(预设9=红 5=黄 共有9张,缺少9的确缺少了9
153930色块饱满无白点。慢工出细活、写了名字部首吉
160蓝、粉、红、橙、紫留空805边缘一圈涂色,中间保留数字的矩阵位置(预设橙色、蓝色写名字
173绿、浅蓝、深蓝紫色、橙色、紫色930从下向上画,预设3=紫、9=绿色 
1811粉色1黄色838纯涂色紫色、红、粉黄、灰、浅绿、深绿、紫色、黄色、留空(涂色饱满无白点,大量线条画出框外 8和3外形也相似、
199红线绿线750与老师示范一样,只用红色线条、绿色线条勾画(预设绿色、红色)“这个是1吗?(1的头底有横线)
20000943蓝色、橙色、粉色、部分线条连线)9连线、4连线) 
2117211个教师指导(预设7=粉)、涂橙色颜色饱满,上面写了一个4,抄写了哦同班抄写15号的学号和名字吉
233609多次求老师,3个都是教师指导,教师画出蓝色数字,鼓励幼儿只涂周围的黄色。”我不会“,4次求助老师。先把所有的底色涂成浅色,然后再找数字
240绿510幼儿不会做,求助老师写学号,教师帮幼儿画出几个数字,但幼儿不理解,自己涂了几笔就上交了(预设两个黑)不会写学号,老师协助
257620涂色块面粗犷,初步找出数字结构位置。 
276深蓝840从下向上画,最开始的几个数字都是一个个格子单个涂色,后期发现部分格子可以连起来一起画。 
28000512黄、观摩他人后进行涂色
30100955教师帮助填了第一个,后期幼儿还是整片涂色为主蓝、绿、紫、粉、红写了名字“张”
314橙、红、蓝、黄绿、粉、紫、白(未涂)830从上到下,最开始的几个数字都是一个个格子单个涂色,后期发现部分格子可以连起来一起画。,先涂外侧的数字、留空白,再涂里面的数字,缺少2,验证后错误 
32000554个全涂+4个U型涂色+2个点杂色幼儿把各种涂色方法试了一下(预设5橙色)两个数字都是5,无法涂两种

 作品分析:

一、涂色篇:(数字涂色、正面涂色)

1、完成卡片数字的数量(找出数字图)

23位幼儿中有3位幼儿完成9张卡片、1位幼儿完成7张卡片、2位幼儿完成6张卡片、2位幼儿完成4张卡片、3位幼儿完成3张卡片、3位幼儿完成1张卡片。

10位幼儿完成0张卡片(这些幼儿都是整张涂色,见后文)

2、完成卡片涂色的数量(点、线、面涂色)

半数幼儿对数字图色块进行点涂色、线涂色、面涂色处理。

从数量来看,4位孩子完成9张卡片的纯色涂色、1位完成8张涂色、3位完成5张涂色、1位完成3张涂色、2位完成2张涂色、1位完成1张涂色。

 还有1位幼儿4张全涂+4张U型涂色+2张个点杂色(综合涂色:点、线、面)

所有幼儿都涂色了,但是时间上看,很多中班孩子并有把所有数字卡片都涂完,可以考虑到9张卡片的题量减少。

3、两份作业上的卡片数字无差异——两个都是5

案例一:检查到5号时,老师照例提醒:“你怎么全部画粉红色了?里面还有另一个数字?”

结果我发现这份灰色提示数字都是5——一时语塞。

虽然左下角幼儿选了粉色和橙色两种颜色,但数字都是5,让整个页面无法区分颜色。 

案例二:后续扫描作业后,发现32号的点线面涂色作业的灰色数字也全部是5

 为什么会出现两个5?检查代码发现了问题:

 原来我把random.randint(x,y)和range(x,y)的数字范围混同了。

for i in range(0,5)

常用的for i in range(0,5) 抽取的数字是0,1,2,3,4,(没有5)。for i in range(5,9) 抽取的数字是5,6,7,8,(没有9)。因此我习惯性在random.randint(x,y)中也用了“算头不算尾”的思路

random.randint(0,5)

但这里是随机抽取数字,算头也算尾

random.randint(0,5)  随机抽取 0,1,2,3,4,5

random.randint(5,9)  随机抽取 5,6,7,8,9

因此,两者之间都可能抽到5.可以改成:

random.randint(0,4)  随机抽取 0,1,2,3,4

random.randint(5,9)  随机抽取 5,6,7,8,9

4、数字外形相似度高,对幼儿涂色行为的影响

缘起:坐在5号同学左侧的6号同学也是整面涂色(她的蜡笔盒里的粉红是深粉色,把灰色数字覆盖了)虽然她的数字是5和6,但是灰色的5和6在视觉上外形有点相似,加上她周围的同伴都是整面涂色,所以幼儿也进行了整面涂色)

   

 随机匹配的0-5、5-9之间的数字的外形相似度是否会影响幼儿辨认?将纯涂色的幼儿筛选后,

发现一些容易影响幼儿视觉判断的数字组。

1、典型的数字——8和3(2人)、9和5(2人)、6和5(1人) 。

2、圆形结构数字——8和0、6和0

3、不确定原因——5和1、9和1、7和2、9和4

 

      从数据来看,数字外形近似的确有一定的视觉干扰,部分幼儿无法辨认两个数字,就统一进行了块面涂色处理。

       从年龄特点来看,由于中班幼儿会将2和5,6和9左右上下倒置,中3班2号、30号、23号、29号等小朋友的学号就常常出现左右镜像,上下镜像的写法,因此在选择涂色数字时,最好需要避开一些容易外形相似,结构容易互换的数字。

5、浅蓝纸上灰色数字颜色不凸显,幼儿数字辨识度降低

与此同时,研究者发现,8位孩子能够理解并找出隐藏在单元格中的矩形数字,数字相似度只是影响幼儿辨识的一方面因素。

 “老师,这个是数字5吗?”活动中有一位孩子指着浅蓝色纸张的一个格子里的一个数字问

老师凑近纸张辨色,点头说:”是5”

浅蓝色纸张上打印灰色数字,小数字完全不能一下子看清楚。

 因此,对于中班幼儿年龄的孩子来说,太小的数字不能使用灰色(看不清楚)

有色打印纸上的小数字必须用深色(黑色)

6、矩形数字的辨识——勾1

做题时,19号男孩指着勾线的1问:“这是1吗?”

“是的,这是英文里面的1,你看左边有一个7了”

他右侧的男孩闻言插嘴道:“我见过这个1”

19号男孩却说:“可是我的1(学号19)不是这么写的” 

“有道理,这种勾子1和这里的7有点像,那下次我改成你说的这种竖条1,没有勾和横线。“

 有色打印纸上的小数字必须用深色(黑色)

 

感悟:

从幼儿操作中,我发现很多学具方面需要调整的内容

1、涂色数都是5,范围修盖—— random.randint(x,y)(取头也取尾)和range(x,y)(取头不取尾)的数字范围是不同,不能混同。

2、小数字不要灰,最好深色——幼儿视觉敏度有差异,部分幼儿难以辨认灰色的、小数字的外形,需要加深小号数字的颜色

3.、小数字数量多,外形要选——排除3和8、2和5、8和9等有一定外形相似(上下镜像、左右镜像)的数字,一定程度也能解决镜像数字差异带来的问题。

时间有限,加上蜡笔画画手指染色,暂时不提倡剪下来当扑克牌(弄脏书包抽屉)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现竖版的SeekBar,可以通过自定义View来实现。具体实现步骤如下: 1. 创建一个自定义View,继承自SeekBar,重写构造方法。 2. 在构造方法中设置SeekBar的方向为竖直方向,即设置android:rotation="270"。 3. 重写onMeasure方法,交换宽高值,确保SeekBar的宽高比例正确。 4. 重写onDraw方法,在绘制SeekBar的轨道和thumb时,将坐标系旋转90度,使其与SeekBar方向相同。 5. 在代码中使用自定义的竖直SeekBar。 下面是一个简单的示例代码: ``` public class VerticalSeekBar extends AppCompatSeekBar { public VerticalSeekBar(Context context) { super(context); init(); } public VerticalSeekBar(Context context, AttributeSet attrs) { super(context, attrs); init(); } public VerticalSeekBar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { setRotation(270f); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(heightMeasureSpec, widthMeasureSpec); setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth()); } @Override protected synchronized void onDraw(Canvas canvas) { canvas.rotate(90); canvas.translate(0, -getWidth()); super.onDraw(canvas); } } ``` 使用时,可以像使用普通的SeekBar一样,将这个自定义的View添加到布局中即可: ``` <com.example.VerticalSeekBar android:id="@+id/seek_bar" android:layout_width="wrap_content" android:layout_height="200dp" android:layout_gravity="center" android:max="100" android:progress="50" /> ``` 注意,这个自定义的SeekBar只是一个简单的示例,可能还需要进行一些调整和优化,以适应不同的使用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值