【教学类-07-09】20241011《破译电话号码-图形篇(图形固定列不重复)》(中2班 有名字 有班级 无学号、撕贴版、零=0)

db6c4b13587e4212980b76a7339ce299.png

 

背景需求

每次带班,我都会做一套“家长手机号”的破译电话号码给孩子做。目前已经有三种类型

1、小班的“描写家长号码”

【教学类-26-01】20230321 背诵家长电话号码-Python数字填空(中班 偏数学和社会)-CSDN博客文章浏览阅读144次。【教学类-26-01】20230321 背诵家长电话号码-Python数字填空(中班 偏数学和社会)https://blog.csdn.net/reasonsummer/article/details/129681093afb412bcbaa346c59ea70fb65976dfcb.png

2、中大班的“图形点数号码”

149a98e247204758a17bbf0d120e1d6c.png

【教学类-07-08】20231114《破译电话号码-图形篇(图形固定列不重复)》(大4班 有名字 有班级 无学号、零=0)_ane3ndbnoutur2juungyykxwlzhjut09wjfxculdddf6d1hyqm-CSDN博客文章浏览阅读184次。【教学类-07-08】20231114《破译电话号码-图形篇(图形固定列不重复)》(大4班 有名字 有班级 无学号、零=0)_ane3ndbnoutur2juungyykxwlzhjut09wjfxculdddf6d1hyqmdzekvsmxbnqt09解密电话号码https://blog.csdn.net/reasonsummer/article/details/134403921

3、大班的“加减法破译号码”

3f58e4238cf74105ae6c4528a27c346d.png

【教学类-07-04】20221113《破译电话号码-加减法版+自制(PDF打印)》(大班主题《我要上小学》)_破译电话号码ppt图片-CSDN博客文章浏览阅读588次。【教学类-07-04】20221113《破译电话号码-加减法版+自制(PDF打印)》(大班主题《我要上小学》)_破译电话号码ppt图片https://blog.csdn.net/reasonsummer/article/details/127828600

存在问题:

现在中2班孩子是上学期,一半孩子“画学号”都困难,更不要说能自主书写“0-9”的阿拉伯数字

【教学类-23-02】20240929(中2班描字)不会写学号的中班幼儿的学号描字贴——杨任东竹石体-Regular-CSDN博客文章浏览阅读1.1k次,点赞24次,收藏8次。【教学类-23-02】20240929(中2班描字)不会写学号的中班幼儿的学号描字贴——杨任东竹石体-Regularhttps://blog.csdn.net/reasonsummer/article/details/142643933

所以以上三种,比较适合中班孩子的就是描学号大字贴,我将“背诵家长手机号”代码调整后,做成整页都是家长手机号的数字贴。

 

49456cc2cdcf4ce88446387b73e34939.png

这份学具的问题

1、只有一位家长的手机号(默认第一个手机号),但这个号码可能并非孩子能背出来的家长手机号。(我会背妈妈的手机,这个手机号不知道)

2、我的教学目的是“点数配对”,而不是“前书写”——幼儿单纯进行描画数字,完成速度有差异。肯定有孩子不动空缺的位置应该填什么。

 

解决思路

因此,我还是选了“图案点子版”的破译电话号码。但结合幼儿不会自主写阿拉伯数字的情况,提供了“撕贴卡”供幼儿黏贴。

素材准备:

f65688c107e04d2ca17b0e0652a532b2.png

WORD模版更改

0d72e79b4e34462db4aa3d6060df5d5b.png

025cda02a647471694283f243171ef39.png

18b66c8fe2494d16ab9b330701f6991a.png

也就是把最下面自由绘画图案的区域改成了撕贴卡片(虚线边框),添加最浅的灰色底纹。

97b89f863665429880bcaf2084256df3.png

EXCEL素材

这里的妈妈爸爸只代表闵豆家园里面提取的第一个手机号和第二个手机号,实际并不一定就是妈妈或爸爸在使用。

673ce9cb6ef64633b401a041e4ff9f8b.png

代码展示


'''
作者:阿夏
时间:2024年10月11日 破译电话号码-图形撕贴版(适合中班不会写数字-名字和班级(不需要分列,直接导入word)
'''
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,time,random

classroom='中2'
#classroom= input('班级名称(如大1)\n')

path=r'C:\Users\jg2yXRZ\OneDrive\桌面\破译电话号码'
print('----------第2步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
ten_path=path+r'\零时Word'
os.makedirs(ten_path,exist_ok=True)

print('------------读取excle表单--------------')
wb = openpyxl.load_workbook(path+r'\家长电话号码.xlsx')# wb=用openpyxl打开存有号码的ExcelEx
phone = wb.active #phone=获取wb里面的数据

print('------------读取 爸爸的手机号--------------')
symbol_1=['●','●','●', '●', '●', '●','●', '●','●','●','●']
father=[]

fathers=[]
for i in list(phone.columns)[4][1:]:# 第3列是爸爸的手机号    
    f=[]
    phonestr = str(i.value)# 电话字符串 = 第二列的数字的值的字符串形式
    print(phonestr)# 打印电话字符串
    for s in phonestr:
        fathers.append(s)
       
#     # Phonenum1
#     # 13512345678
#     # 16556345690
#     # 13724680156
#     print('------------ 爸爸的手机号的数字全部写在一起--------------')
    # for i in phonestr:
    col = 0 # 
    for _ in phonestr:# 在电话字符串里面循环遍历 取各种数字
        if i.value!= 'Phonenum1':# 如果电话号码的值不等于'dad' 不要第一行C1
            if int(_) != 0:# 如果取出的数字不等于0  等于1-9
                str_temp = int(_) * symbol_1[col] #  结果等于 取出的数字的整数 乘以 符号列表的相应列数的符号(批量几个符号)
            else:# 如果取出的数字=于0
                str_temp = '0'# 0=零
            # print( str_temp)
            father.append(str_temp)                  
        col +=1           
print(father)
print(len(father))
# # ['●', '●●●', '●●●●●', '●', '●●', '●●●', '●●●●', '●●●●●', '●●●●●●', '●●●●●●●', '●●●●●●●●', '●', '●●●●●●', '●●●●●', '●●●●●', '●●●●●●', '●●●', '●●●●', '●●●●●', '●●●●●●', '●●●●●●●●●', '零', '●', '●●●', '●●●●●●●', '●●', '●●●●', '●●●●●●', '●●●●●●●●', '零', '●', '●●●●●', '●●●●●●']
print(fathers)
print(len(fathers))

print('------------读取  妈妈的手机号--------------')
mother=[]
mothers=[]
symbol_2 = ['▲','▼','●','♦','■','▶','◀','◣','◥','◤','◢']# 
for j in list(phone.columns)[6][1:]:
    phonestr = str(j.value)
    print(phonestr)
    for s in phonestr:
        mothers.append(s)
    # Phonenum2
    # 13214562358
    # 15615617891
    # 13123568210
    print('------------ 妈妈的手机号的数字全部写在一起--------------')
    col = 0 #  第一个字符串的起始列 123数下去 mum电话的第一位数在第O列=15列
    for _ in phonestr:
        if j.value != 'Phonenum2':
            if int(_) != 0:
                str_temp = int(_) * symbol_2[col]  
            else:
                str_temp = '0'
            mother.append(str_temp) 
        col +=1            
print(mother)
print(len(mother))
# ['▲', '▼▼▼', '●●', '♦', '■■■■', '▶▶▶▶▶', '◀◀◀◀◀◀', '◣◣', '◥◥◥', '◤◤◤◤◤', '◢◢◢◢◢◢◢◢', '▲', '▼▼▼▼▼', '●●●●●●', '♦', '■■■■■', '▶▶▶▶▶▶', '◀', '◣◣◣◣◣◣◣', '◥◥◥◥◥◥◥◥', '◤◤◤◤◤◤◤◤◤', '◢', '▲', '▼▼▼', '●', '♦♦', '■■■', '▶▶▶▶▶', '◀◀◀◀◀◀', '◣◣◣◣◣◣◣◣', '◥◥', '◤', '零']
print(len(mothers))
# print('-----------
#
# - 爸爸的手机号拆开成11个一组的列表--------------')
father_all = [father[i*11:i*11+11] for i in range(0, int(len(father)/11))]
print(father_all)

father_num=[]
father_nums = [fathers[i*11:i*11+11] for i in range(0, int(len(fathers)/11))]
print(father_nums)
for x in father_nums:    
    father_num.append(random.sample(x,len(x)))
print(father_num)




#
# - 妈妈的手机号拆开成11个一组的列表--------------')
mother_all = [mother[i*11:i*11+11] for i in range(0, int(len(mother)/11))]
print(mother_all)

mother_num=[]
mother_nums = [mothers[i*11:i*11+11] for i in range(0, int(len(mothers)/11))]
print(mother_nums)
for x in mother_nums:    
    mother_num.append(random.sample(x,len(x)))
print(mother_num)


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)
print(C)#['CLASS', '大七班', '大七班', '大七班']    

print('------------ 数据导入word,字体设置--------------')
from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor

for y in range(0,int(len(father)/11)):      
    doc = Document(path+r'\破译电话号码模板(图案撕贴).docx')    
    wb = pd.read_excel(path+r'\家长电话号码.xlsx')   
    table = doc.tables[0] 

    print('------------学号\班级写入,字体设置--------------')
    n=N[y+1]
    run=table.cell(0,2).paragraphs[0].add_run(n)    # 这里的可以代表学号或者名字,把上面连接的数字改掉 姓名02 学号06 班级08
    run.font.name = '黑体'#输入时默认华文琥珀字体
    run.font.color.rgb = RGBColor(220,220,220) #设置颜色浅灰
    run.font.size = Pt(45)  #输入字体大小默认30号
    r = run._element
    r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    table.cell(0,2).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中

    c=C[y+1]
    run=table.cell(0,8).paragraphs[0].add_run(c)    # 班级08
    run.font.name = '黑体'#输入时默认华文琥珀字体
    run.font.color.rgb = RGBColor(220,220,220) #设置颜色浅灰
    run.font.size = Pt(45)  #输入字体大小默认30号
    r = run._element
    r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    table.cell(0,8).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中

    for nn in range(0,11):
        print('------------ 爸爸的手机号写入不同的word,字体设置--------------')
        f=father_all[y][nn]  
        print(f) 
        run=table.cell(2,nn).paragraphs[0].add_run(f)    # 在第该表格3行1列的单元格内输入“xxxx”
        run.font.name = '黑体'#输入时默认华文琥珀字体
        run.font.size = Pt(18)  #输入字体大小默认30号
        r = run._element
        r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
        table.cell(2,nn).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中

       
        ff = father_num[y][nn]  
        print(ff) 
        run=table.cell(9,nn).paragraphs[0].add_run(ff)    # 在第该表格3行1列的单元格内输入“xxxx”
        run.font.name = '黑体'#输入时默认华文琥珀字体
        run.font.size = Pt(35)  #输入字体大小默认30号
        run.underline = True        # 下划线
        r = run._element
        r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
        table.cell(9,nn).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中

        

        print('------------ 妈妈的手机号写入不同的word,字体设置--------------')
        g=mother_all[y][nn]  
        print(g) 
        run=table.cell(5,nn).paragraphs[0].add_run(g)    # 在第该表格3行1列的单元格内输入“xxxx       
        run.font.name = '黑体'#输入时默认华文琥珀字体
        run.font.size = Pt(18)  #输入字体大小默认30号
        r = run._element
        r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
        table.cell(5,nn).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中 

        mm=mother_num[y][nn]  
        print(mm) 
        run=table.cell(8,nn).paragraphs[0].add_run(mm)    # 在第该表格3行1列的单元格内输入“xxxx”
        run.font.name = '黑体'#输入时默认华文琥珀字体
        run.font.size = Pt(35)  #输入字体大小默认30号
        run.underline = True        # 下划线
        r = run._element
        r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
        table.cell(8,nn).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中 

        


    doc.save(ten_path+r'\{}.docx'.format('%02d'%(y+1)))#保存为XX学号的电话号码word                   
    
    # docx 文件另存为PDF文件
    inputFile = ten_path+fr'\{y+1:02}.docx'  # 要转换的文件:已存在
    outputFile = ten_path+fr'\{y+1:02}.pdf' # 要生成的文件:不存在
    # 先创建 不存在的 文件
    f1 = open(outputFile, 'w')
    f1.close()
    # 再转换往PDF中写入内容
    convert(inputFile, outputFile)
    time.sleep(2)
    
print('----------第4步:把都有PDF合并为一个打印用PDF------------')
    
# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
import os
from PyPDF2 import PdfFileMerger
target_path = ten_path
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(path+fr'\(打印合集)20241010破译电话号码-图案撕贴版-名字和班级({classroom}班-{int(len(father)/11)}份).pdf')
file_merger.close()
# doc.Close()

# print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree(ten_path) #递归删除文件夹,即:删除非空文件夹


作品展示

f5d91e1dcff74f8185107ec917c59f88.png

最下面的一条11个数字是第1个手机号码的撕贴卡,数字出现的顺序与原号码不一致,是打乱的(红色),

倒数第二条11个数字是第2个手机号码的撕贴卡,数字出现的顺序与原号码不一致,是打乱的(蓝色)

db6c4b13587e4212980b76a7339ce299.png

 

撕贴卡用了虚线,用滚刀切割

灰色底纹,黏贴后可以看到那些白格子需要继续黏贴
f538af66e73c49a5a82728dc256086af.png

数字添加下划线,以免撕下后,搞不清楚纸张摆放的方向(6和9容易上下、2和5容易镜像)

53670202a2c44a4d9a3f4abc78168e3d.png

再次练习学号书写,左侧的汉字名字是为了便于老师分发纸张9a69d6c251fe4c99b411436f3cf7893c.png

 

有的孩子家长只留了一个手机号,就复制同样的号码,下面的撕贴卡也是乱序的。

17d7a1c75fa641049c57583dae1ee547.png

感觉这一份撕贴的更适合中班上学期(不会写数字)的孩子进行点数对应。过几天有空测试吧。

 

这几天忙着两个考试

1、10月19日-20日成考入学考(上师大-专升本-人工智能)

2、10月23日养老护理初级(8套动作实操)

所以考完前,没法更新了。

 

江湖路远,吾道不孤,山高水长,后会有期(* ̄︶ ̄)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿夏reasonsummer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值