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

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

时间:2024-10-12 18:18:51浏览次数:8  
标签:11 run 07 撕贴 father print path 图形 手机号

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套动作实操)

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

 

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

 

 

标签:11,run,07,撕贴,father,print,path,图形,手机号
From: https://blog.csdn.net/reasonsummer/article/details/142862423

相关文章

  • Armitage:MSF图形界面神器
    原创自然嗨嗨嗨安全免责声明请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者无关。ArmitageArmitage是一款Java写的Metasploit图形界面化的攻击软件,可以用它结合Metasploit中已知的exploit来针对主机存在的漏洞自动化攻击。通过命令行的方式......
  • 【亲测可用】矢量图形处理软件Adobe Illustrator(AI2024)软件下载安装使用win/mac
    目录AdobeAI软件简介功能特点下载与安装下载:安装步骤:AdobeAI软件简介AdobeAI,全称AdobeIllustrator,是Adobe公司开发的一款专业的矢量图形处理软件。自1987年首次发布以来,AdobeIllustrator已成为行业标准之一,广泛应用于平面设计、UI设计、插画创作、印刷出版、海报......
  • Vmware中linux图形化界面安装《 VMware Tools》
    VMWare回收空间(方法一)1.安装VMwareTools#创建文件拷贝目录mkdir/usr/temp#创建挂在目录mkdir/mnt/cdrom#挂镜像文件mount/dev/cdrom/mnt/cdrom#复制安装文件cp/mnt/cdrom/VMwareTools-10.3.25-20206839.tar.gz/usr/temp#解压文件cd/usr/temp&&tar-zx......
  • 南沙C++信奥赛陈老师解一本通题 1939:【07NOIP普及组】纪念品分组
    ​ 【题目描述】元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完......
  • 基于Uni-App的 电子书阅读器系统 可选章节阅读 微信小程序 echats图形化分析
    项目介绍随着移动互联网技术的迅猛发展和智能设备的普及,人们的阅读习惯和方式正在发生深刻的变化。传统的纸质书籍逐渐被电子书所取代,而在线电子书作为数字阅读的重要组成部分,更是受到了广泛的关注和青睐。在这样的背景下,开发一款基于Uni-App的电子书阅读器系统,不仅符合当......
  • AI预测福彩3D采取888=3策略+和值012路或胆码测试10月11日新模型预测第107弹
            经过100多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,100多期一共只错了12次,这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了,大部分菜友还是走的正常渠道,因此,得想办法进行缩水,尽可能......
  • 07-数据表创建方式(Database First、Model First、Code First)
    常见的创建数据表结构的三种方式:DatabaseFirstModelFirst  DBA经常使用这个方式CodeFirst   推荐程序员使用,此方法专注于业务模型的设计,而不是专注数据库设计 Flask-SQLAlchemy介绍SQLALchemy实际上是对数据库的抽象,让开发者不用直接和SQL语句打交道,而是......
  • 20222307 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容进程内存管理在Linux系统中,当OS可执行程序被加载到内存后,其内存布局主要包括三个关键段:*.text段:包含程序的指令,这些指令是只读的,用于指导CPU执行操作。*.data段:存储静态初始化数据,这些数据是可写的,程序在运行时可以直接访问和修改。*.bss段:用......
  • 07 触发器
    07触发器触发器,是指在既定条件或者特殊场景下被触发,从而去执行一个操作。在WPF中,触发器可以分为以下几类:基本触发器(Trigger);事件触发器(EventTrigger);数据触发器(DataTrigger);多条件触发器(MultiTrigger,MultiDataTrigger)。下面我们来通过代码一一了解。基本触发器(属性触发器......
  • idea数据库图形化窗口连接数据库报错:Driver class ‘com.mysql.cj.jdbc.Driver‘ not
    报错信息在idea中数据库图形化窗口中,创建下图数据库连接点击测试连接后,发生报错:Driverclass'com.mysql.cj.jdbc.Driver'notfoundNodriverfilesprovided.报错界面:原因出现此错误的原因通常是数据库驱动程序尚未下载或未正确配置到IDEA中。解决方案......