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

news2025/7/11 12:15:05

 效果展示

 

 背景需求:

         我的小课题《运用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代码可以存放再任意位置,因为所有文件路径都是已经全部写在代码里。

'''
作者:阿夏
时间:2022年10月20日
名称:大班学具:门牌号随机删除(6层*3间 )
'''
import numbers
import os


num=int(input('需要多少份教具(30人)\n'))
floor=int(input('共有几层楼(6层)\n'))
number=int(input('每层几间房(3间)\n'))
delete=int(input('需要删除几个门牌号(6*3=18/2=9个)\n')) # 想要删除几个自己决定 本文默认是总数的一半9*5/22.5=22个
# delete=int(floor*number/2)  # 本文默认是总数的一半9*5/22.5=22个

print('----------第1步:制作门牌号------------')
door=[]
for a1 in range(1,floor+1):    
    for a23 in range(1,number+1):
        b=str(a23).rjust(2,'0')
        c='{}{}'.format(a1,b)
        door.append(c)
print(door)
print('----------第2步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\门牌号2\门牌号Word')


print('----------第3步:随机抽取门牌号数字 打开Word,把抽取的门号替换为空------------')
import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
import os,time

for nn in range( 1,num+1):    
    word = gencache.EnsureDispatch('Word.Application')
    #启动word对象应用
    word.Visible = False
    doc = word.Documents.Open(r'C:\Users\jg2yXRZ\OneDrive\桌面\门牌号2\门牌号模板{}乘{}.docx'.format(floor,number))
    #单个另存为word 单独文件夹内
    doc.SaveAs(r'C:\Users\jg2yXRZ\OneDrive\桌面\门牌号2\门牌号Word\{}.docx'.format('%02d'%nn))    # '%02d'%nn=把"1.docx"改成"01.docx"
    doc.Close()  #关闭1.docx 
    #打开“1.docx”
    time.sleep(1) 
    doc = word.Documents.Open(r'C:\Users\jg2yXRZ\OneDrive\桌面\门牌号2\门牌号Word\{}.docx'.format('%02d'%nn))

    # 随机抽取几个门牌号(#CSDN博主「孟意昶」 原文链接:https://blog.csdn.net/weixin_44999258/article/details/125163277)
    s=[]
    for i in range(0,delete):
        shuffle = random.choice(door)
        print(shuffle)    # '602'
        s.append(shuffle) #['602', '403', '505']
        for b in s:
            print(b)        # 602\403\505

            # 删除表格里的门牌号 (作者:守候\链接:https://www.zhihu.com/question/388608509/answer/2552638658)
            i = 0
            for ta in doc.Tables: # 遍历表格
                # f为每个表格区域查找
                f = ta.Range.Find

                # 查找框参数
                f.ClearFormatting() # 清除原有格式
                f.Forward = True # 向前查找
                f.Wrap = constants.wdFindStop # 查找完成即停止
                f.MatchWildcards = True # 使用通配符,根据需要设置
                f.Text = '{}'.format(b) # 查找的内容

                # 替换框参数(删除为空=把门号替换为''空值
                f.Replacement.ClearFormatting() # 清除原有格式
                f.Replacement.Text = '' # 替换框内容
                # f.Replacement.Font.ColorIndex = constants.wdRed # 替换文本的颜色设置为红色,此处是为了演示方便,看到效果。根据需要设置
                f.Execute(Replace=constants.wdReplaceAll) # 执行,查找全部
                i += 1   
        
    doc.Save()# 把有空格的1.docx保存

    # 打开1.docx 另存为1.pdf   每一个单页的docx分别保存一个单页的PDF
    doc=word.Documents.Open("C:/Users/jg2yXRZ/OneDrive/桌面/门牌号2/门牌号Word/{}.docx".format('%02d'%nn),ReadOnly=1)
    doc.ExportAsFixedFormat("C:/Users/jg2yXRZ/OneDrive/桌面/门牌号2/门牌号Word/{}.pdf".format('%02d'%nn),constants.wdExportFormatPDF)
    # 关闭1.docx
    doc.Close()
    
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/桌面/门牌号2/门牌号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/桌面/门牌号2/(打印合集)门牌号{}乘{}({}份).pdf".format(floor,number,num))
file_merger.close()


print('----------第5步:删除临时文件夹------------')    
import shutil
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位数)

 

 ​​​​​​​

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用css 动画实现节流

节流指的避免过于频繁的执行一个函数,例如:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为做一定的限制,不然会频繁的请求接口,之前基本上是通过js去控制节流问题,其实css也能…

k-form-design 改成自己组件步骤

1)修改package.json {"name": "kk-form-design","version": "1.0.2","private": false,"description": "基于vue、ant-design-vue的表单设计器,可视化开发表单","license": &quo…

Linux下的截图工具 —— Flameshot

一、简介 Flameshot是一款功能强大但易于使用的屏幕截图软件,中文名称火焰截图。Flameshot 简单易用并有一个CLI版本,所以你也可以从命令行来进行截图。Flameshot 是一个Linux发行版中完全免费且开源的截图工具。 特性: 外观可定制化。易于…

数据结构-红黑树

红黑树 二分查找 二叉树 二叉平衡树 平衡因子不超1 查找和二叉查找一样的 删除和插入比较复杂 四种失去平衡的方法 LR 两步 RL 两步 不断旋转比较耗时 进一步改进: 红黑树RBT 调整的次数少 平衡性不如二叉平衡树 , 插入删除频繁的使用红黑树&…

redis的主从复制,哨兵和cluster集群

一、redis性能管理 (1) redis-cli 127.0.0.1:6379> info memory ​ (2) redis-cli info memory used_memory_rss:是Redis向操作系统申请的内存。used_memory:是Redis中的数据占用的内存。used_memo…

新手零基础自学Python,安装并配置环境+教程

第一步:搭建python运行环境 在 Windows 上安装 Python 和安装普通软件一样简单,下载安装包以后猛击“下一步”即可。 Python 安装包下载地址:https://www.python.org/downloads/ 打开该链接,可以看到有两个版本的 Python&#…

java框架 —— Spring

Spring[TOC](Spring)1、概述1.1、优点1.2、组成2. IOC概述2.1 什么是IOC2.1.1 推导过程2.1.2 IOC本质2.2 HelloSpring2.2.1 导入Jar包2.2.2 编写代码2.2.2 思考2.3 IOC过程2.4 IOC 接口3. Bean 管理3.1 基于xml方式——set方法注入3.2 FactoryBean3.3 bean 作用域3.4 bean 生命…

Java——面向对象进阶(封装、继承、多态)

Java面向对象三大特性——封装、继承、多态一、封装1.封装基本概念2.访问修饰符3.Java中封装的理解4.封装的优点二、继承1.为什么需要继承2.继承层次结构3.super和this关键字4.继承语法与设计一个继承体系三、多态1.多态的概念2.多态的实现条件3.多态的优缺点一、封装 1.封装基…

【微服务架构组件】Nacos

初识nacos 最近在整合nacos做配置的热下发,总结下。 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 阿里开源产品:什么是 Nacos 如 Na…

[Leetcode]138. 复制带随机指针的链表

目录 1.题目链接 2.1解法①(暴力) 2.1.1解法思路: 2.1.2代码实现: 2.2解法②(进阶) 2.1.1解法思路: 2.2.2代码实现: 1.题目链接 138. 复制带随机指针的链表 - 力扣(LeetCode) 2.1解法①(暴力) 2.1.…

软考 - 操作系统

操作系统概述 bit和byte区别 bit 位 说白了就是0或者1;计算机内存中的存储都是01这两个东西。 byte(B) 字节 1byte8bit(一字节 8比特) 1byte就是1B 1byte 存1个英文字母,2个byte存一个汉字。 了解 操作系统的作用&#xff1…

SpringBoot使用EasyExcel类一键导出数据库数据生成Excel,导入Excle生成List<>数据(作者直接给demo项目)

文章目录一、简单一键导出Excel直接给出生成效果Empty&#xff0c;这个很关键controller层EasyExcel类的多种使用方式二、导入Excel生成List<>数据controller层&#xff0c;简单写法监听器写法&#xff08;观察者模式&#xff09;&#xff0c;稍微麻烦其他如果要使类中的…

动态拼接 merge 语句

【问题】 Hello everyone, I have one query, would be great if anyone can help me out on this. In SQL, I have two tables with same column names. Want to query if there is any difference in the column values and if yes will update the values(in the first ta…

LEADTOOLS 入门教程: 使用 AWS Lambda 转换文档 - C# .NET Core

LEADTOOLS 是一个综合工具包的集合&#xff0c;用于将识别、文档、医疗、成像和多媒体技术整合到桌面、服务器、平板电脑、网络和移动解决方案中&#xff0c;是一项企业级文档自动化解决方案&#xff0c;有捕捉&#xff0c;OCR&#xff0c;OMR&#xff0c;表单识别和处理&#…

SSM框架真没那么难,这份阿里大佬的进阶实战笔记真给讲透了!

SSM框架&#xff1a; SSM框架是spring MVC &#xff0c;spring和mybatis框架的整合&#xff0c;是标准的MVC模式&#xff0c;将整个系统划分为表现层&#xff0c;controller层&#xff0c;service层&#xff0c;DAO层四层 使用spring MVC负责请求的转发和视图管理 spring实现…

Docker学习笔记

1.docker比vm快的原因: docker有着比虚拟机更少的抽象层,不需要实现硬件资源的虚拟化运行,运行在docker上的程序使用的都是物理机的资源. dicker利用的是宿主机的内核,不需要加载操作系统的os内核. 2.docker帮助文档docker help 具体到某一个命令是使用 docker run --help即可…

【JMeter】Jmeter分布式压测教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录一、原理二、环境搭建2.1 环境准备2.2 slave机器配置2.3 master机器配置三、脚本及执行3.1 参数化问题3.2 GUI启动测试3.3 命令行启动测试总结一、原理 Jmeter分布式…

【深入理解Kotlin协程】CoroutineScope.launch源码追踪扒皮

lifecycleScope、viewModelScope、GlobalScope、MainScope的上下文 协程最重要的就是协程上下文对象&#xff0c;因为通过上下文可以获取到协程相关的任何东西(Job、Dispatcher、Interceptor、Name、ExceptionHandler)&#xff0c;所以有必要了解清楚常用的协程作用域对象中cor…

asp.net+sqlserver汽车4s店销售网站系统c#项目

数据项 管理员信息表&#xff5b;用户编号&#xff0c;用户名称&#xff0c;用户密码&#xff5d; 新闻信息表&#xff5b;编号&#xff0c;标题&#xff0c;内容&#xff0c;添加时间&#xff5d; 汽车信息表&#xff5b;编号&#xff0c;汽车名称&#xff0c;汽车价格&#x…

制造业行业现状及智能生产管理系统一体化解决方案

前言&#xff1a; 《中国制造2025》作为我国实施制造强国战略第一个十年的行动纲领。它重点提出了坚持&#xff1a;创新驱动、质量为先、绿色发展、结构优化、人才为本的基本方针。坚持&#xff1a;市场主导、政策引导&#xff0c;立足当前、着眼长远&#xff0c;整体推进、重…