【教学类-23-01】20221217《不会写学号的中班幼儿的学号描字贴》(中班描字)

news2024/11/15 8:57:16

  成品样式:

每个孩子3页A4横板,供6次书写

 打印样式:

  

 背景需求:

前期进行6次的Python学具教学活动,对中3班幼儿书写学号和名字的情况评估:

 筛选出10位需要练习学号的幼儿。

学号、名字需要持续性、强化性练习,才能形成肌肉记忆我需要为幼儿做几套学号描字贴。

word表格设置

 竖版,页边距:上下左右0.7CM

6个格子中间必须有空行。

边框线1磅

学号数字的大小,数字在单元格内上下左右居中对齐

EXCLE设置:

 表格放在第一个

一共10个人的学号书写不规范(镜像字、字形难以辨认、完全不会写等)

代码发布:

为了缩减长度,这个代码我研究很久,理论上还可以更精炼。但目前水平就这样了。


'''
作者:阿夏
时间:2022年12月17日
名称:中3班不会写名字的孩子练习学号)
'''

import xlwt
import xlrd
import os
import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块

import os,time
import 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 qn

from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor


wb= xlrd.open_workbook(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\学生名单.xlsx") #打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的,很详细,英语不好的可以百度翻译,翻译出来的结果差不多。
sheet=wb.sheet_by_index(0)   #通过索引的方式获取到某一个sheet,现在是获取的第一个sheet页,也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')
col1=sheet.col_values(0)# 学号
col2=sheet.col_values(1)# 名字
num=len(col1)-1  # 第一列去掉第一行

list=[]
# 生成 基本组:“学号“
for i in range(1,len(col1)):
    # for d in range(8):
    name='{}'.format (int(col1[i]) )    #学号
    list.append(name)    
print(list)# 32个名字

# 单元格坐标 
# zb=['35','46','55','68','44','79']
zb=['34','45','54','67','43','78']

# 6个表格所有的table[bg] 
bg=[]

for i in range(0,len(zb)):
    # print(i)
    for x in range(0,int(zb[i][1])):        # 行
        for y in range(0,int(zb[i][0])):            #列
            bg.append('{}{}'.format(x,y)) 
# print(len(bg)) 
# # 162
# print(bg) 
# ['00', '01', '02', '10', '11', '12', '20', '21', '22', '30', '31', '32', '00', '01', '02', '03', '10', '11', '12', '13', '20', '21', '22', '23', '30', '31', '32', '33', '40', '41', '42', '43', '00', '01', '02', '03', '04', '10', '11', '12', '13', '14', '20', '21', '22', '23', '24', '30', '31', '32', '33', '34', '00', '01', '02', '03', '04', '05', '10', '11', '12', '13', '14', '15', '20', '21', '22', '23', '24', '25', '30', '31', '32', '33', '34', '35', '40', '41', '42', '43', '44', '45', '50', '51', '52', '53', '54', '55', '60', '61', '62', '63', '64', '65', '00', '01', '02', '03', '10', '11', '12', '13', '20', '21', '22', '23', '00', '01', '02', '03', '04', '05', '06', '10', '11', '12', '13', '14', '15', '16', '20', '21', '22', '23', '24', '25', '26', '30', '31', '32', '33', '34', '35', '36', '40', '41', '42', '43', '44', '45', '46', '50', '51', '52', '53', '54', '55', '56', '60', '61', '62', '63', '64', '65', '66', '70', '71', '72', '73', '74', '75', '76']

# 把zb做成索引数量
# 第一次,X*Y=Z
# zb=['34','45','54','67','43','78']
zb1=[]
zb1.append(0)
for t in range(len(zb)):
    b=int(zb[t][0])*int(zb[t][1])
    zb1.append(b)
print(zb1)
# zb1=[0, 12, 20, 20, 42, 12, 56]

# 第二次:反复相加
zb2=[]
# zb1= [0, 12, 20, 20, 42, 12, 56]
for m in range(1,len(zb1)+1):
    zb2.append(sum(zb1[:m]))
print(zb2)
# zb2=[0, 12, 32, 52, 94, 106, 162]

#  第三次,提取两个索引数字
bg_all=[]

xx = zb2[0:len(zb2)-1]
yy = zb2[1:len(zb2)]
zz= dict(zip(xx,yy))
# print(bg_all)
# zz={0: 12, 12: 32, 32: 52, 52: 94, 94: 106, 106: 162}

# 6套坐标索引分割开来
for k,v in zz.items():    # 提取键key(第一个)值value(第二个)
    print(k,v)
    g=bg[int(k):int(v)]
    # print(g)
    bg_all.append(g)
print(bg_all)
[['00', '01', '02', '10', '11', '12', '20', '21', '22', '30', '31', '32'], ['00', '01', '02', '03', '10', '11', '12', '13', '20', '21', '22', '23', '30', '31', '32', '33', '40', '41', '42', '43'], ['00', '01', '02', '03', '04', '10', '11', '12', '13', '14', '20', '21', '22', '23', '24', '30', '31', '32', '33', '34'], ['00', '01', '02', '03', '04', '05', '10', '11', '12', '13', '14', '15', '20', '21', '22', '23', '24', '25', '30', '31', '32', '33', '34', '35', '40', '41', '42', '43', '44', '45', '50', '51', '52', '53', '54', '55', '60', '61', '62', '63', '64', '65'], ['00', '01', '02', '03', '10', '11', '12', '13', '20', '21', '22', '23'], ['00', '01', '02', '03', '04', '05', '06', '10', '11', '12', '13', '14', '15', '16', '20', '21', '22', '23', 
'24', '25', '26', '30', '31', '32', '33', '34', '35', '36', '40', '41', '42', '43', '44', '45', '46', '50', '51', '52', '53', '54', '55', '56', '60', '61', '62', '63', '64', '65', '66', '70', '71', '72', '73', '74', '75', '76']]

size=[72,60,67,48,86,36]

# # # font=['楷体','楷体','楷体','隶书','华文新魏','华文彩云','方正姚体','幼圆']# 8种字体

print('----------第1步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word')
# doc= docx.Document(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字贴\打印合集描字贴.docx")# 新建Word

for n in range(0,num):    # 一共多少份
    doc = docx.Document(r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\中3班不会写学号的孩子的描字帖练习册.docx")
    for t in range(0,len(bg_all)):
        table = doc.tables[t]   
        for p in range(0,int(len(bg_all[t]))):
                   # 一共有9个表格

            
            pp=int(bg_all[t][p][0])     # 提取表格bg里面每个元素的第0个数字==单元格X坐标  t=索引数字
            qq=int(bg_all[t][p][1]) 
            # f=font[t]        # 字体格式
            k=list[n]               # 从4名字里提取名字\
            ss=size[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(ss)  #输入字体大小80或68号
            run.font.color.rgb = RGBColor(200,200,200) #设置颜色10%黑色=深灰
        
            r = run._element
            r.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'%n))#保存为XX学号的零时word

    from docx2pdf import convert
    # docx 文件另存为PDF文件
    inputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.docx".format('%02d'%n)# 要转换的文件:已存在
    outputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.pdf".format('%02d'%n)  # 要生成的文件:不存在
    # 先创建 不存在的 文件
    f1 = open(outputFile,'w')
    f1.close()
    # 再转换往PDF中写入内容
    convert(inputFile, outputFile)

    from docx2pdf import convert

print('----------第4步:把都有PDF合并为一个打印用PDF------------')

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/桌面/描字帖/(打印合集)大班A整页描字帖2乘5加表格-4名字-({}人).pdf".format(num))
file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/(打印合集)中3班不会写学号的孩子的描字帖练习册({}份).pdf".format(num))
file_merger.close()
# doc.Close()

# # print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/零时Word') #递归删除文件夹,即:删除非空文件夹`

重点说明:

 提取学号,因为日常幼儿写字不会在个位数字前加0,加上模板里用了单元格分割数字位置,所以1-9可以用单个数字展示。这里就不用‘%02d'%i来补全两位数

 手动输入6个表格

 把6个表格的坐标数字都提取在一起

 重点1:因为每个表格里面的数量不同,因此需要反复提取索引值,确定每个表内的填入数量

 运用items提取键值(第1、2个索引数字) 生成[[],[],[]]的列表样式

 写入6个表格的各个单元格

 保存

学具展示及制作:

不会写的幼儿描字练习:

2022年12月16日,中3班只有8人,向中3班发放10份描字帖,只有2位幼儿在园进行书写,其余本子都放在幼儿抽屉里。待幼儿返园后练习(每天半页)

 

 

 

感悟:

1、有字帖是基础,指导要跟上

光为幼儿提供字帖还不够,必须要指导幼儿对字形进行结构理解,书写笔画的练习。

(9号写着写着,9的竖条变短了,自己写学号时,字形歪斜厉害)

(17号对粗体字进行反复涂色,加粗1的的线条。自己写学号时,7没有弯斜。)

2、不等表格数量,测试获成功

前期我在《像素数字卡片》里实验了多表格等量单元格的数字写入。

本次6个表格的单元格数量都不同,因而我花了5天反复调整代码,想用遍历方式实现多表格不等量单元格的数字写入,顺利实现缩短代码的目标。

学无止境!

由于新冠疫情,上海发布通知2022年12月19日开始幼儿不再入园,我也没有实验对象了,因此学具设计暂时告一个段落,研究方向转向对前期案例的整理撰写,为小课题研究做好基础性资料。

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

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

相关文章

科技改变世界,科技改变世界杯

2022年11月20日,2022年卡塔尔世界杯(英语:FIFA World Cup Qatar 2022)在充满阿拉伯风情的开幕式中拉开了帷幕。 相比以往世界杯,今年卡塔尔世界杯在赛场上加设的黑科技,让我们在赛场上反复领略到了各种剧情…

机器学习100天(四):004 数据预处理之类别特征编码

机器学习100天,今天讲的是:数据预处理之类别特征编码。 在上一节,我们对特征 X 的 NaN 值进行了平均数插值处理。 我们打开 X,查看第一列特征,国家这一列: 发现这一列特征都是字符串,例如:法国、德国、韩国。 大部分机器学习模型,字符串类别特征是不能用来直接进行…

极简TS语法入门

@关于TypeScript 微软/大项目:诸位,都按我定义好的类型撸码,谁也别TM瞎搞!哥也没时间跟你们浪费口舌了,凡瞎**搞的让丫连编译都通不过!(内心:不把C++的一点基因伸到前端被窝去你们当我微软是真软啊…)各种装X大厂:收到!立马装起来!什么?研发成本?这个我们不考虑的…

LeetCode刷题复盘笔记—一文搞懂动态规划之5. 最长回文子串问题(动态规划系列第二十五篇)

今日主要总结一下动态规划的一道题目,5. 最长回文子串 题目:5. 最长回文子串 Leetcode题目地址 题目描述: 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串…

Java项目:SSM失物招领网站信息管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目为后台管理系统,分为管理员与用户两种角色; 管理员角色包含以下功能: 管理员登录,修改个人信息,用户…

零编程基础小白学习python应该看的python入门书籍

Python作为目前的大势,是很多人转行的首选,会python的人工资通常都比较高。Python在人工智能、大数据、自动化运维、全栈开发方面有着得天独厚的优势。随着Python继续占领编程语言主流的趋势,全国各城市的招聘职位和薪资均会大幅度上涨。另外…

使用java访问HDFS

文章目录利用Java编写程序访问HDFS1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、启动集群HDFS服务5、在HDFS上创建文件利用Java编写程序访问HDFS 1、创建Maven项目 创建Maven项目 - HDFSDemo 单击【Create】按钮 2、添加相关依赖 在pom.xml文件里添加hadoop和…

【问答篇】Java 基础篇面试题(二)

每天进步一点~ 01、问:PreparedStatement与Statement的区别? 答: PreparedStatement是预编译语句执行者,数据库对sql语句进行预编译;Statement是执行时对sql语句进行编译 Statement存在sql注入的问题,Prep…

25.读写文件

到目前为止,我们讨论了如何处理数据, 以及如何构建、训练和测试深度学习模型。 然而,有时我们希望保存训练的模型, 以备将来在各种环境中使用(比如在部署中进行预测)。 此外,当运行一个耗时较…

English Learning - L1-3 从此没有不会的表达(上) 2022.12.12 周一

English Learning - L1-3 从此没有不会的表达(上) 2022.12.12 周一4 名词性从句名词性从句的类型4.1 各种从句的变身4.1.1 陈述句的变身一个严肃的问题:为什么要加 that ?那什么情况下,that 是可以省略的?特殊动词4.1…

Okhttp源码分析实践(三)【WebDemo的简单实现】

我们继续深入探索okhttp的知识点和面。本章,我们一起来实现一些简单的服务端Demo API,至于为什么,其实之前也说过,一方面是为了使我们之前所学的http的基础知识得到实践运用,另外一方面,是为了我们之后自己编写实现okhttp时,避免不了肯定要做很多API测试,免费的测试api…

vue3 provide与inject进行状态管理

vue3 provide与inject进行状态管理 一、数据仓库准备 在store–>新建index.js文件,作为仓库数据 状态集中管理数据实现响应式ref reactive—>对象中存储状态msg,age,counter import {reactive} from vue const store{//数据state:reactive({msg:"Hello …

WebRTC:P2P音视频通话基础概述

前言 本篇文章参考WebRTC基础知识详解_签约计划_IT酷盖_InfoQ写作社区,介绍了P2P音视频通信的场景下的一些基础知识,包括WebRTC的基本架构、协议栈,一对一通话基础,和一对一通话原理三部分。 WebRTC基本架构 WebRTC 的组件架构分…

css样式补充,项目前置认知,精灵图,背景图片大小,阴影,过渡,SEO简介

1、css样式补充,项目前置认知,字体图标 学习目标: u 能够在网页中使用 精灵图 u 能够使用 背景大小属性 ,设置背景图片的大小 u 能够认识 CSS书写顺序,提高代码专业性和浏览器渲染性能 u 能够使用的专业方式完成 项目结…

1_MyBatis入门-1_认识框架

原生JDBC实现CURD的问题 1 编码繁琐 2 需要我们自己将结果集映射成对象 3 性能不太好 连接池 缓存 4 SQL语句和java代码的耦合度特别高 5 … … MyBatis 本是Apache的一个开源项目iBatis, 2010年这个项目由Apache Software Foundation 迁移到了Google Code,且…

java高级--Elasticsearch

一、概述搜索引擎 1.1 什么是搜索引擎 概念:用户输入想要的关键词,返回含有该关键词的所有信息。 场景: 1、互联网搜索:谷歌、百度、各种新闻首页 2、 站内搜索(垂直搜索):企业OA查询订单、人员…

Linx基础(8)shell基础

该文章主要为完成实训任务,详细实现过程及结果见【参考文章】 参考文章:https://howard2005.blog.csdn.net/article/details/127139576?spm1001.2014.3001.5502 文章目录一、常用shell命令1. 管道命令任务1、查看/etc目录信息前5行信息任务2、查看/etc/…

【谷歌新作】Transformer杀入机器人领域,RT-1:97%成功率,轻松完成700多条控制指令

谷歌机器人团队等在机器人领域构建了一个多任务 transformer 模型,显著改进了对新任务、环境和对象的零样本泛化。 我们知道,机器学习(ML)多个子领域(如 NLP 和 CV)的最新重大进展通过一种共享的通用方法实…

ZYNQ之FPGA学习----SPI协议驱动模块仿真实验

1 SPI通信协议简介 SPI通信协议基础知识学习:硬件设计基础----通信协议SPI 2 实验任务 设计SPI驱动模块,并进行仿真验证,观察仿真波形 3 实验设计 3.1 创建工程 新建工程,操作如图所示: 输入工程名和路径&#x…

m基于K-means聚类算法和神经网络的模糊控制器设计matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 聚类就是按照某个特定标准把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一…