【教学类-13-01】20221112《数字色块图5*7*9》(中大班主题《》)
创始人
2024-04-07 01:12:55
0

 效果展示

 背景需求:

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

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

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

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

  

WORD表格制作(在纵向A4)

页眉写入个人信息

 分栏

 表格参数 

 两个表格中间的段落间距 

代码设计:

'''作者:阿夏
时间:2022年11月11日数字像素图(A4竖板5*7 9个表)
(A4竖排5*7*9 每套两个数字涂成不同的颜色 ))
'''import os,randomnum=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,timeimport 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 qnfrom docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColorfor 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._elementr.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- 15:00-15:30

班级:大班

人数:人

剪下来当扑克牌玩

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...