背景需求
每次带班,我都会做一套“家长手机号”的破译电话号码给孩子做。目前已经有三种类型
1、小班的“描写家长号码”
2、中大班的“图形点数号码”
3、大班的“加减法破译号码”
存在问题:
现在中2班孩子是上学期,一半孩子“画学号”都困难,更不要说能自主书写“0-9”的阿拉伯数字
所以以上三种,比较适合中班孩子的就是描学号大字贴,我将“背诵家长手机号”代码调整后,做成整页都是家长手机号的数字贴。
这份学具的问题
1、只有一位家长的手机号(默认第一个手机号),但这个号码可能并非孩子能背出来的家长手机号。(我会背妈妈的手机,这个手机号不知道)
2、我的教学目的是“点数配对”,而不是“前书写”——幼儿单纯进行描画数字,完成速度有差异。肯定有孩子不动空缺的位置应该填什么。
解决思路
因此,我还是选了“图案点子版”的破译电话号码。但结合幼儿不会自主写阿拉伯数字的情况,提供了“撕贴卡”供幼儿黏贴。
素材准备:
WORD模版更改
也就是把最下面自由绘画图案的区域改成了撕贴卡片(虚线边框),添加最浅的灰色底纹。
EXCEL素材
这里的妈妈爸爸只代表闵豆家园里面提取的第一个手机号和第二个手机号,实际并不一定就是妈妈或爸爸在使用。
代码展示
'''
作者:阿夏
时间: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) #递归删除文件夹,即:删除非空文件夹
作品展示
最下面的一条11个数字是第1个手机号码的撕贴卡,数字出现的顺序与原号码不一致,是打乱的(红色),
倒数第二条11个数字是第2个手机号码的撕贴卡,数字出现的顺序与原号码不一致,是打乱的(蓝色)
撕贴卡用了虚线,用滚刀切割
灰色底纹,黏贴后可以看到那些白格子需要继续黏贴
数字添加下划线,以免撕下后,搞不清楚纸张摆放的方向(6和9容易上下、2和5容易镜像)
再次练习学号书写,左侧的汉字名字是为了便于老师分发纸张
有的孩子家长只留了一个手机号,就复制同样的号码,下面的撕贴卡也是乱序的。
感觉这一份撕贴的更适合中班上学期(不会写数字)的孩子进行点数对应。过几天有空测试吧。
这几天忙着两个考试
1、10月19日-20日成考入学考(上师大-专升本-人工智能)
2、10月23日养老护理初级(8套动作实操)
所以考完前,没法更新了。
江湖路远,吾道不孤,山高水长,后会有期(* ̄︶ ̄)
标签:11,run,07,撕贴,father,print,path,图形,手机号 From: https://blog.csdn.net/reasonsummer/article/details/142862423