• 【教学类-08-01】20221010《门牌号(6层*3间 黑色版)》(大班主题《我们的城市》)


     效果展示

     

     背景需求:

             我的小课题《运用Python设计大班层次性纸类学具的案例研究》获得2022年MHQ小课题立项,在前期的《学号名字描字帖》《身份证》《数字分合》《破译电话号码》的基础上,需要设计更多与大班主题活动书上的主题相关的学习材料。

           门牌号是下学期《我们的城市》主题中的一个活动——“造房子”。在该主题的个别化学习-益智区中,每个班级老师都会制作一个“小房子”,引导幼儿根据坐标了解各楼层门牌号的排序方式。

     存在问题:

    9月我用uibot写了门牌号6*3的代码,批量生成第一次的6*3黑色版作业纸。

    主要思路:

    1、打开模板,

     2、另存为1.docx.2.docx……

    3、随机数*(6*3-1=17个数字)-在1-18个数字之间随机抽取(会重复抽取同一个值)

    4、再次打开1.docx.2.docx. 查找被抽取的101、405,鼠标定位到这个号码前,删除3次,这个格子空

    5、重新保存为1..docx.2.docx

    6、同时另存为1.pdf,2.pdf

    7、最后把所有数字PDF文件合并为一个打印用的PDF

    8、删除1.docx和1.pdf

    文件设置:

    (一)文件位置

      (二)Word模板

    1.(屋顶是用“”插入形状”(正方形、圆形))

    2。插入表格6*3(把格子凑满A4一页即可)

    3、在单元格里手动输入:101 102……(代码会随机从中删除几个数字)

     模板里面的数字需要手动输入添加,也可以在Excel表格里制作后再复制到Word里。

    代码呈现

    py代码可以存放再任意位置,因为所有文件路径都是已经全部写在代码里。

    1. '''
    2. 作者:阿夏
    3. 时间:2022年10月20日
    4. 名称:大班学具:门牌号随机删除(6层*3间 )
    5. '''
    6. import numbers
    7. import os
    8. num=int(input('需要多少份教具(30人)\n'))
    9. floor=int(input('共有几层楼(6层)\n'))
    10. number=int(input('每层几间房(3间)\n'))
    11. delete=int(input('需要删除几个门牌号(6*3=18/2=9个)\n')) # 想要删除几个自己决定 本文默认是总数的一半9*5/22.5=22个
    12. # delete=int(floor*number/2) # 本文默认是总数的一半9*5/22.5=22个
    13. print('----------第1步:制作门牌号------------')
    14. door=[]
    15. for a1 in range(1,floor+1):
    16. for a23 in range(1,number+1):
    17. b=str(a23).rjust(2,'0')
    18. c='{}{}'.format(a1,b)
    19. door.append(c)
    20. print(door)
    21. print('----------第2步:新建一个临时文件夹------------')
    22. # 新建一个”装N份word和PDF“的文件夹
    23. os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\门牌号2\门牌号Word')
    24. print('----------第3步:随机抽取门牌号数字 打开Word,把抽取的门号替换为空------------')
    25. import random
    26. from win32com.client import constants,gencache
    27. from win32com.client.gencache import EnsureDispatch
    28. from win32com.client import constants # 导入枚举常数模块
    29. import os,time
    30. for nn in range( 1,num+1):
    31. word = gencache.EnsureDispatch('Word.Application')
    32. #启动word对象应用
    33. word.Visible = False
    34. doc = word.Documents.Open(r'C:\Users\jg2yXRZ\OneDrive\桌面\门牌号2\门牌号模板{}乘{}.docx'.format(floor,number))
    35. #单个另存为word 单独文件夹内
    36. doc.SaveAs(r'C:\Users\jg2yXRZ\OneDrive\桌面\门牌号2\门牌号Word\{}.docx'.format('%02d'%nn)) # '%02d'%nn=把"1.docx"改成"01.docx"
    37. doc.Close() #关闭1.docx
    38. #打开“1.docx”
    39. time.sleep(1)
    40. doc = word.Documents.Open(r'C:\Users\jg2yXRZ\OneDrive\桌面\门牌号2\门牌号Word\{}.docx'.format('%02d'%nn))
    41. # 随机抽取几个门牌号(#CSDN博主「孟意昶」 原文链接:https://blog.csdn.net/weixin_44999258/article/details/125163277)
    42. s=[]
    43. for i in range(0,delete):
    44. shuffle = random.choice(door)
    45. print(shuffle) # '602'
    46. s.append(shuffle) #['602', '403', '505']
    47. for b in s:
    48. print(b) # 602\403\505
    49. # 删除表格里的门牌号 (作者:守候\链接:https://www.zhihu.com/question/388608509/answer/2552638658)
    50. i = 0
    51. for ta in doc.Tables: # 遍历表格
    52. # f为每个表格区域查找
    53. f = ta.Range.Find
    54. # 查找框参数
    55. f.ClearFormatting() # 清除原有格式
    56. f.Forward = True # 向前查找
    57. f.Wrap = constants.wdFindStop # 查找完成即停止
    58. f.MatchWildcards = True # 使用通配符,根据需要设置
    59. f.Text = '{}'.format(b) # 查找的内容
    60. # 替换框参数(删除为空=把门号替换为''空值
    61. f.Replacement.ClearFormatting() # 清除原有格式
    62. f.Replacement.Text = '' # 替换框内容
    63. # f.Replacement.Font.ColorIndex = constants.wdRed # 替换文本的颜色设置为红色,此处是为了演示方便,看到效果。根据需要设置
    64. f.Execute(Replace=constants.wdReplaceAll) # 执行,查找全部
    65. i += 1
    66. doc.Save()# 把有空格的1.docx保存
    67. # 打开1.docx 另存为1.pdf 每一个单页的docx分别保存一个单页的PDF
    68. doc=word.Documents.Open("C:/Users/jg2yXRZ/OneDrive/桌面/门牌号2/门牌号Word/{}.docx".format('%02d'%nn),ReadOnly=1)
    69. doc.ExportAsFixedFormat("C:/Users/jg2yXRZ/OneDrive/桌面/门牌号2/门牌号Word/{}.pdf".format('%02d'%nn),constants.wdExportFormatPDF)
    70. # 关闭1.docx
    71. doc.Close()
    72. print('----------第4步:把都有PDF合并为一个打印用PDF------------')
    73. # 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
    74. import os
    75. from PyPDF2 import PdfFileMerger
    76. target_path = 'C:/Users/jg2yXRZ/OneDrive/桌面/门牌号2/门牌号Word'
    77. pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
    78. pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
    79. pdf_lst.sort()
    80. file_merger = PdfFileMerger()
    81. for pdf in pdf_lst:
    82. print(pdf)
    83. file_merger.append(pdf)
    84. file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/门牌号2/(打印合集)门牌号{}乘{}({}份).pdf".format(floor,number,num))
    85. file_merger.close()
    86. print('----------第5步:删除临时文件夹------------')
    87. import shutil
    88. shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/门牌号2/门牌号Word') #递归删除文件夹,即:删除非空文件夹

    运行输入:、

      

    重点解析:

     

    教学过程:

    一、Python学具《门牌号6*3(黑色字》

    (一)基本信息:大1班    2022年10月19日   24人

     

     

     

     

     

     

     

     

    (二)作品扫描

     

     

     

    存在问题:

    1,从黑到灰——门牌号数字色彩需要更改

    (1)记号笔做题:Word里面的印刷数字黑色数字,如果幼儿用记号笔书写黑色加粗字体,容易和打印的黑色数字——不便于教师快速辨认哪些空格是幼儿填写的。

    (2)铅笔做题:而如果幼儿使用铅笔书写,显示为灰色,虽然与印刷黑有区别,但如果集体讲评时,幼儿写的铅笔字就很浅,容易看不清楚——不便于集体活动中同伴们辨认做题者作业的正确性。

            如果原始字体是纯黑色,无论幼儿用记号笔(黑粗)还是6B铅笔(灰细),从视觉上都不便于教师与幼儿们辨认他人的作品(哪些是填写的?填了哪些数字?是否正确?)所以研究者决定把Word模板里把黑色数字改成灰色数字体。

    2,从异到同——空缺数量需要统一

    门牌号6*3作业分析,虽然我设置的6*3=18个格子里面删除一半数字=9个,但实际打印的作业纸上每个房间的空缺数量不等。空缺5-10个都出现了。

    原因分析:random.choice是随机抽取数字(可能会有抽取101抽取2次,删除1个101,第2次抽101就空,也就是浪费一次其他数字的机会),改成随机不重复random.sample(唯一的数字抽取)就会保证每张作业的格子空缺数量相等。

    2,从简到难——门牌号数量需要增加

       通过互相帮助、求助老师等方式,大1班幼儿都完成了6*3房间号,因此教师可以尝试利用A4纸竖版继续制作数量更多的门牌号模板,如9*5(巩固练习)、10*5(考验4位数)

     

    感悟:

    1、字体颜色变浅

    2、房间数量可以增加。

  • 相关阅读:
    tiworker.exe是什么程序?tiworker.exe占用大量内容如何解决?
    k8s之pod控制器
    【虚幻引擎UE】UE4/UE5 GIS相关插件推荐及使用介绍
    你想对构造函数说些什么?
    Rust多线程编程
    C3P0反序列化链学习
    MySQL开发技巧——查询、索引和完整性
    【考研数学】高等数学第七模块 —— 曲线积分与曲面积分 | 3. 对面积的曲面积分(第一类曲面积分)
    Spark性能调优案例-千亿大表读取,数据倾斜和task倾斜
    由于 MAC 地址的问题,导致网络不通的原因和分析
  • 原文地址:https://blog.csdn.net/reasonsummer/article/details/127880173