效果展示: 

两列两列连连看

背景需求:

在前一篇【教学类-12-01】20221105《连连看8*4》(小班主题《白天与黑夜》)中已经说明背景需求,本篇考虑到幼儿的能力特点(能力强的画的太快了),特地修改图形的大小和间距,增加画线的次数,提升难度。

本文核心代码与前一篇相同,只是修改了word里的字号和间距

链接位置:

1、生成的PDF保存在这里——C:\Users\jg2yXRZ\OneDrive\桌面\连连看\

(没有“打印”文件夹也不影响)

2、py文件的位置(  放在电脑任意位置都不影响运行,我这里为了便于查找,放在D:/test下

代码设计

'''作者:阿夏
时间:2022年11月4日连连看12*4)
(A4竖排12*4张,纵向中间剪切))
'''import osnum=int(input('生成多少份\n'))
Number=int(input('每页制作多少个(24个)\n'))print('----------第1步:提取所有图案------------')
list=['✿','☸','✪','☁','➹','✈','☂','☃','◐','☼','☯','◎','❤','♨','☋','♘','★','♫','❀','〼','✉','☏','♕','♖']
print(len(list))# 一共24个图案print('----------第2步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\连连看\零时Word')print('----------第3步:随机抽取12个不重复的图案 ------------')
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 qnfor nn in range( 1,num+1):   #多少份# word = gencache.EnsureDispatch('Word.Application')doc =Document()# doc = docx.Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\连连看\连连看Python模板.docx')# 打开带docx模板(这个模板有页脚的页码,阿夏认为页码是必须的)# 先随机抽取12个一列  all=[]n1=[]n2=[]n = random.sample(list, Number)    # 24个里面随机抽取24个放入一个组nnprint(n)for b1 in n[0:int(Number/2)]:     #   24个里面的1-12个,提取单独数n1.append(b1)   # 做第2列的乱序用all.append(b1)  # 第1轮12个添入总列表  (插入Word第1列)  # print(n1)# print(all)o1 = random.sample(n1, int(Number/2))    # 第1轮12个再随机打乱一次,不重复抽取for b in o1:all.append(b)#第1轮12个乱序排列不重复(插入Word第2列)# print(all)# # 以下代码用作第1列1-12图案,第2列12-1倒序排列# for bb in range(int(Number/2)-1,-1,-1):#     print(bb)#     all.append(n1[bb])#第1轮12个倒序排列不重复(插入Word第2列)        # print(all)for b2 in n[int(Number/2):Number]:  #24个里面的13-24个,提取单独数n2.append(b2)   # 做第4列的乱序用all.append(b2)  # 第2轮12个添入总列表  (插入Word第3列)  # print(all)o2 = random.sample(n2, int(Number/2))    # 第2轮12个再随机打乱一次,不重复抽取for b in o2:all.append(b)#第2轮12个乱序排列不重复(插入Word第4列)# print(all) # # 以下代码用作第3列13-24图案,第4列24-13倒序排列 # for bb in range(int(Number/2)-1,-1,-1):#     print(bb)#     all.append(n2[bb])#第2轮12个倒序排列不重复(插入Word第4列)        # print(all)# 把all里面的所有元素输入到Word里    for c in all:     # 单个取值print(c) doc.add_paragraph(c)  # 把内容按段落输入到doc这个docx文件内# 字体这一段一定要再写一次for paragraph in doc.paragraphs:for run in paragraph.runs:             run.font.size = Pt(56)                # 数字题目字体大小run.font.bold = False                    #数字题目字体是否加粗 不加粗,5*8再加粗比较满,压抑了run.font.name = 'Arial'           # 控制是英文时的字体run.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')  # 控制数字是中文时的字体# paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # 设置数字页眉居中对齐paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 设置数字页眉居中对齐# paragraph.paragraph_format.line_spacing=1 #数字中文字的段行距paragraph.paragraph_format.line_spacing = Pt(56) #数字段间距# 设置主要页边距 5from docx.shared import Cm # 导入cm模块doc.sections[0].top_margin = Cm(0.7)# sections[1]是第二节=第二页 上边距doc.sections[0].bottom_margin = Cm(0.7)# sections[1]是第二节=第二页 下边距doc.sections[0].left_margin = Cm(0.7) # sections[1]是第二节=第二页 左边距doc.sections[0].right_margin = Cm(0.7)# sections[1]是第二节=第二页 右边距# 设置其他页边距 doc.sections[0].gutter=Cm(0)# sections[1]是第二节=第二页 装订线 默认为0 左doc.sections[0].header_distance=Cm(1)# sections[1]是第二节=第二页 页眉边距doc.sections[0].footer_distance=Cm(1)# sections[1]是第二节=第二页 页脚边距# 装订线还有一个位置属性,暂时未发现如何设置,默认为左,如果需求设置成右,可以建个模板docx文档导入。# 设置纸张方向和大小  LANDSCAPE=横  PORTRAIT纵  默认信纸 纵from docx.shared import Cm # 导入CM # from docx.enum.section import WD_ORIENTATION  # 导入纸张方向doc.sections[0].page_height = Cm(29.7)  # 设置A4纸的高度doc.sections[0].page_width = Cm(21)  # 设置A4纸的宽doc.sections[0].orientation = WD_ORIENTATION.LANDSCAPE # 设置纸张方向为横向 L # 设置分栏 如果不要,就把数字该为为1from docx.oxml.ns import qndoc.sections[0]._sectPr.xpath('./w:cols')[0].set(qn('w:num'), '4') #把第二节页设置为2栏# doc.Save()# 把有空格的1.docx保存doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\连连看\零时Word\{}.docx'.format('%02d'%nn))       from docx2pdf import convert# docx 文件另存为PDF文件inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/连连看/零时Word/{}.docx".format('%02d'%nn)  # 要转换的文件:已存在outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/连连看/零时Word/{}.pdf".format('%02d'%nn)  # 要生成的文件:不存在# 先创建 不存在的 文件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/桌面/连连看/(打印合集)连连看{}乘4({}份).pdf".format(int(Number/2),num))
file_merger.close()
# doc.Close()# print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/连连看/零时Word') #递归删除文件夹,即:删除非空文件夹

运行说明:

1、运行代码需要输入的信息 

生成Word和PDF过程中,会有一个“零时Word”文件夹“暂时出现。

“零时Word”文件夹里面的内容(30份)

30份全部生成后,“零时Word”文件夹会被删除,留下最后需要的打印合并PDf(30份随机的连连看)

重点代码:

1、图案的选择 :从24个不同的文字符号图案

2、确认4列中12个图案的排位,导入ALL列表

3、all里面的图案按预定计划写入Word的列,设置字体大小段间距(这里是重点)

4、页边距与分栏

视频时长

运行时长:连连看12*4,30份,运行时长1分0秒

连连看12乘4_30份

最后的效果图

(1)高难度:一列12个图,连线时间长一点,

这一套每个图案都有了,所以幼儿不需要交换。

(2)《统计》有几个爱心,几个王冠(都是2个)

感悟:

千变万化的随机抽取,实现多种难度的学具设计。

【教学类-12-02】20221105《连连看12*4-分栏4-不重复24个)(小班主题《白天与黑夜》)相关推荐

  1. 【教学类-12-01】20221105《连连看8*4-分栏4-不重复16个)(小班主题《白天与黑夜》)

    效果展示: 两列两列连连看 背景需求: 从小班到大班,幼儿都有关于"连线"的练习(手拉手做朋友.物品配对.标志连连看),预先用一uibot制作了A4一页8*4个(16组连连看图案) ...

  2. 【教学类-06-03】20220327 X以内数字分合题(分)及生成word 打印docx纸(方法一)(Python VS )

    本代码价值: 终端生成的列表 通过TXT文本转换成docx文件 征文需求: 3月上海疫情隔离开启居家办公生涯.月底区教育局有一个"工具运用"的征文比赛,阿夏以<设计Pytho ...

  3. 【教学类-34-01】拼图(运动项目-长方块拼图)3*4格子(中班主题《个别化拼图》健康偏艺术-美术)

    背景需求: 一个月的Python纸类学具研究中,我发现个别男孩喜欢把作业中的数字.图案.单元格剪成小块(小卡片) 近年几周,剪条.剪块的孩子人数也慢慢递增.(分发时有点麻烦) 幼儿需求:锻炼手指精细动 ...

  4. 【教学类-33-01】20230417食物交换卡片1.0版(6、8、10、12以内的随机数量+绘画+等量交换)(中班:偏科学-数)

    作品效果 背景需求 探究PPT图标里面的矢量图有什么与教学相关的用途 代码 ''' 目的: 1.根据食物卡片的每种食物数量写出数字或者尝试交换卡片(6以内.8以内.10以内.12以内) 2.作者:阿夏 ...

  5. 【教学类-12-03】20221106《连连看横版8*4(2套题目 适合中班))(中班主题《我们的城市》)

    效果展示 背景需求: 前期制作了<连连看8*4-不重复16个)<连连看12*4-不重复24个) 问题分析: <连连看8*4-不重复16个)<连连看12*4-不重复24个)采用的 ...

  6. http://www.blogjava.net/heyang/archive/2010/12/02/

    2019独角兽企业重金招聘Python工程师标准>>> http://www.blogjava.net/heyang/archive/2010/12/02/339589.html 使 ...

  7. 【跃迁之路】【658天】程序员高效学习方法论探索系列(实验阶段415-2018.12.02)...

    @(收集箱(每日一记,每周六整理))专栏 实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长 实验期2年(2017.10.06 - 2019.10.06) ...

  8. HP LoadRunner 12.02 Tutorial T7177-88037教程独家中文版

    LoadRunner 12.02教程独家中文版 Tylan独家呕血翻译 转载请注明出自"天外归云"的博客园 Welcome to the LoadRunner Tutorial L ...

  9. Java黑皮书课后题第10章:***10.8(金融:Tax类)编程练习题8.12使用数组编写一个计算税款的程序。设计一个名为Tax类,该类包含下面的实例数据域

    ***10.8(金融:Tax类)编程练习题8.12使用数组编写一个计算税款的程序.设计一个名为Tax类,该类包含下面的实例数据域 题目 程序解释 代码 Test8.java Test8_Tax.jav ...

最新文章

  1. 调试来自于逐飞的MM32F3277移植有MicroPython开发板
  2. android byte[] 转string 好多问号_java程序员面试遇到string题如何不凉?
  3. Hibernate面试题
  4. 89c52单片机c语言延时程序计算 脉冲,stc89c52单片机的程序 求翻译
  5. 【新冠疫情】5G到底能为抗疫做点啥,这篇文章终于讲清楚了
  6. 软件行业大牛告诉你何谓成功?
  7. java编码技巧_编码小技巧 让java编程更便捷
  8. 时间管理----分析工作安排和首要任务
  9. python相关性分析特征过滤_Python相关性分析
  10. 微软、英特尔和高盛牵头成立供应链安全工作组
  11. Luakit的前世今生
  12. micropython和python区别-什么是MicroPython?
  13. springmvc上传图片后显示损毁或不能显示_猿蜕变系列7——也说说springMVC上传姿势...
  14. TCP为什么是3次握手而不是2次或者4次或者更多次?
  15. JCR分区与中科院分区详解-中科院基础版和升级版详解
  16. ZigBee协议栈的串口实验
  17. 高数 | 利用定积分定义求极限
  18. 3D打印行业入行总结
  19. LeetCode刷题13-简单-罗马数字转整数
  20. 海德上位机软件学习总结(NetScada5.0)

热门文章

  1. 研磨设计模式 之 访问者模式(Visitor)2——跟着cc学设计系列
  2. java ajax同步请求,成都汇智动力-java ajax实现异步同步请求全面详解
  3. TC申请是否需要银行转账记录?
  4. win7电脑便签删了还能恢复么
  5. 图片放大不清晰怎么办?​无损放大可解决
  6. JAVA写文本编辑器(四)
  7. CAD专用卸载工具,完美彻底卸载清除干净cad各种残留注册表和文件。
  8. qt中QPixmap和QImage使用
  9. 2022-2028年中国仓储管理系统行业市场深度分析及投资前景展望报告
  10. C语言--编程将递增数列10、20、30、40、50、60、70、80、90、100保存到数组中,再从键盘输入一个整数,插入到该数列中,使之成为一个递增数列。