当前位置: 首页 > news >正文

【教学类-89-02】20250128新年篇02——姓名藏头对联(星火讯飞+Python,五言对联,有横批)

背景需求:

过年了,我想用幼儿的名字写对联,但是我根本不会写,于是尝试让AI来写。

1.我班的孩子的名字都是2字和3字的

2.惊喜发现,AI它很快就能生成带名字的对联

但是观察发现,如果是二个名字的对联,它就用这两个字做头字,但如果三个字、四个字,它会随机取第1字、第3字、第2字中的两个(1和3,或者2和3),而不是用最后面两个字(2和3,不包含姓,1)

可是我希望只用幼儿的“名”,所以我把幼儿的名字变成2个字(两个名字就保留,三个名字删除姓氏,四个名字删除姓氏和第第二个字。)

再次输入:并且希望它变成个表格,方便我用Python遍历

关键词

(幼儿名字,保留最后两个字)

“XX

XX

XX

对每个名字,写一幅5字对联,如果名字是三个字就用后面2个字写,如果是名字只有二个字,就用着两个字写。表格形式呈现

只有两个字,对联肯定就用这两个字了。

素材准备

EXCLE:把AI表格复制到EXCEL内

两个WORD模版

对联(A4一页两条对联*2,必须是2的倍数)

这里是30人,15张A4

横批(A4一页五条*1,必须是5的倍数)
这里是30人,6张A4

代码展示:

'''
幼儿姓名的对联制作
星火讯飞(AI生成对联、AI生成Python代码)、阿夏
20250114
'''
import openpyxl
import os 
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
import randomimport os,time
import docx
from docx import Document
from docx.shared import Inches,Cm,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 RGBColortxt='华文隶书'
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\对联'# 打开Excel文件
workbook = openpyxl.load_workbook(path+r'\名字.xlsx')# 选择活动的工作表
sheet = workbook.active# 创建一个空列表来存储单元格数据
data_list = []# 遍历工作表中的所有行和列
for row in sheet.iter_rows(min_row=2, values_only=True):for cell in row:data_list.append(cell)# 打印结果
print(data_list)# 将列表分为每5个一组的嵌套列表
nested_list = [data_list[i:i + 5] for i in range(0, len(data_list), 5)]# 打印结果
print(nested_list)print('---------1、制作对联----------')# 遍历嵌套列表并提取特定索引的值(不要第2列的名字)
extracted_values = [[str(sublist[0]), str(sublist[0]), sublist[2], sublist[3]] for sublist in nested_list if len(sublist) >= 5]# 打印结果
print(extracted_values)# 将 extracted_values 取消嵌套
flattened_list = [item for sublist in extracted_values for item in sublist]# 打印结果
print(flattened_list)# 每10个元素提取一次
chunks = [flattened_list[i:i + 8] for i in range(0, len(flattened_list), 8)]# 打印结果
print(chunks)
print(len(chunks))# 创建临时文件夹
new_folder = path+r'\零时文件夹'
os.makedirs(new_folder, exist_ok=True)for nn in range(0,int(len(chunks))):    doc = Document(path+r'\对联.docx')# 单元格位置3*4格bg=[]for x in range(0,2):        # 4行for y in range(0,2):    # 3列ww=f'{x:02}{y:02}'bg.append(ww)for x in range(0,2):        # 4行for y in range(2,4):    # 3列ww=f'{x:02}{y:02}'bg.append(ww)print(bg)   # ['00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01']table = doc.tables[0]          # 4567(8)行for t in range(len(bg)):   # 02pp = int(bg[t][0:2])    qq = int(bg[t][2:4])  k = chunks[nn][t] print(pp, qq, k)print(k)  # 写入序号和生肖名称run = table.cell(pp, qq).paragraphs[0].add_run(' '.join(map(str, k)))    # 在单元格0,0(第1行第1列)输入第0个图图案run.font.name = txt # 输入时默认华文彩云字体# run.font.bold = True  # 是否加粗run.font.bold = False  # 是否加粗run.font.color.rgb = RGBColor(200, 200, 200) # 数字小,颜色深0-255if pp == 0:run.font.size = Pt(28)  # 如果单元格是(0,X),就把输入的文字的字体改成28else:run.font.size = Pt(116)  # 其他情况下保持默认字体大小r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), txt) # 将输入语句中的中文部分字体变为华文行楷table.cell(pp, qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 居中    doc.save(new_folder + fr'\\{nn:02}.docx')import os
from docx2pdf import convert
from PyPDF2 import PdfMerger# 定义文件夹路径
input_folder = new_folder
output_folder = path+r'\PDF'
os.makedirs(output_folder,exist_ok=True)merged_pdf_path = os.path.join(output_folder, '01对联.pdf')# 确保输出文件夹存在
os.makedirs(output_folder, exist_ok=True)# 将DOCX文件转换为PDF
convert(input_folder)# 获取转换后的PDF文件列表
pdf_files = [f for f in os.listdir(input_folder) if f.endswith('.pdf')]# 创建PDF合并器对象
merger = PdfMerger()# 将所有PDF文件添加到合并器中
for pdf in pdf_files:pdf_path = os.path.join(input_folder, pdf)merger.append(pdf_path)# 将合并后的PDF保存到指定位置
merger.write(merged_pdf_path)
merger.close()print(f"所有PDF已合并并保存到 {merged_pdf_path}")import shutil
shutil.rmtree(new_folder)print('---------1、制作横批----------')# 遍历嵌套列表并提取特定索引的值(不要第2列的名字)
extracted_values = [[str(sublist[0]), str(sublist[4])] for sublist in nested_list if len(sublist) >= 5]# 打印结果
print(extracted_values)# 将 extracted_values 取消嵌套
flattened_list = [item for sublist in extracted_values for item in sublist]# 打印结果
print(flattened_list)# 每10个元素提取一次(1个人2条,一页需要5人,10个一组,等于30条等于6页
chunks = [flattened_list[i:i + 10] for i in range(0, len(flattened_list), 10)]# 打印结果
print(chunks)
print(len(chunks))# 创建临时文件夹
new_folder = path+r'\零时文件夹'
os.makedirs(new_folder, exist_ok=True)for nn in range(0,int(len(chunks))):    doc = Document(path+r'\横批.docx')# 单元格位置3*4格bg=[]for x in range(0,5):        # 4行for y in range(0,2):    # 3列ww=f'{x:02}{y:02}'bg.append(ww)print(bg)   # ['00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01', '00', '01']table = doc.tables[0]          # 4567(8)行for t in range(len(bg)):   # 02pp = int(bg[t][0:2])    qq = int(bg[t][2:4])  k = chunks[nn][t] print(pp, qq, k)print(k)  # 写入序号和生肖名称run = table.cell(pp, qq).paragraphs[0].add_run(' '.join(map(str, k)))    # 在单元格0,0(第1行第1列)输入第0个图图案run.font.name = txt  # 输入时默认华文彩云字体# run.font.bold = True  # 是否加粗run.font.bold = False  # 是否加粗run.font.color.rgb = RGBColor(200, 200, 200) # 数字小,颜色深0-255if qq == 0:run.font.size = Pt(28)  # 如果单元格是(0,X),就把输入的文字的字体改成28else:run.font.size = Pt(109)  # 华文隶书字体下横批最大109,否则就两行了r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), txt) # 将输入语句中的中文部分字体变为华文行楷table.cell(pp, qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 居中    doc.save(new_folder + fr'\\{nn:02}.docx')import os
from docx2pdf import convert
from PyPDF2 import PdfMerger# 定义文件夹路径
input_folder = new_folder
output_folder = path+r'\PDF'
os.makedirs(output_folder,exist_ok=True)merged_pdf_path = os.path.join(output_folder, '02横批.pdf')# 确保输出文件夹存在
os.makedirs(output_folder, exist_ok=True)# 将DOCX文件转换为PDF
convert(input_folder)# 获取转换后的PDF文件列表
pdf_files = [f for f in os.listdir(input_folder) if f.endswith('.pdf')]# 创建PDF合并器对象
merger = PdfMerger()# 将所有PDF文件添加到合并器中
for pdf in pdf_files:pdf_path = os.path.join(input_folder, pdf)merger.append(pdf_path)# 将合并后的PDF保存到指定位置
merger.write(merged_pdf_path)
merger.close()print(f"所有PDF已合并并保存到 {merged_pdf_path}")import shutil
shutil.rmtree(new_folder)print('---------3、对联横批合并----------')# 定义文件夹路径
input_folder = path+r'\PDF'
output_folder = path
os.makedirs(output_folder,exist_ok=True)merged_pdf_path = os.path.join(output_folder, f'01幼儿姓名的对联横批{int(len(flattened_list)/4)}人.pdf')# 确保输出文件夹存在
os.makedirs(output_folder, exist_ok=True)# 将DOCX文件转换为PDF
convert(input_folder)# 获取转换后的PDF文件列表
pdf_files = [f for f in os.listdir(input_folder) if f.endswith('.pdf')]# 创建PDF合并器对象
merger = PdfMerger()# 将所有PDF文件添加到合并器中
for pdf in pdf_files:pdf_path = os.path.join(input_folder, pdf)merger.append(pdf_path)# 将合并后的PDF保存到指定位置
merger.write(merged_pdf_path)
merger.close()print(f"所有PDF已合并并保存到 {merged_pdf_path}")import shutil
shutil.rmtree(input_folder)

作品展示

用红色A4纸打印出来(因为红色纸已经做了蛇年红包和福字贴,不够了,我只打印了当天来园孩子的名字)

裁纸机切割

没来的孩子纸张背面又打印了一位来园孩子的名字对联

教学展示

时间:2025年1月14日

班级:中2班

人数:11人

看视频:了解对联的习俗(桃符)及贴法

对联和横批配好了,按学号摆放,幼儿找自己的名字

按学号来领取(先男后女)

幼儿描对联(要求是各种黑色笔、但幼儿用了黑色和彩色笔)

剪对联

这位孩子把灰色部分都描粗了,很像毛笔字

大部分孩子都是线描,把灰色变成黑色线条即可


准备贴门帘

(黏贴雌雄扣,雄扣,尖头)

因为不确定幼儿会把雌帖贴在红对联背面的什么位置,我就随即贴了很多雄扣,最好是剪一块,但我没有准备,只能“将就”使用用

幼儿贴对联及合影

 

感悟

1.AI模型太强大了:用AI批量写幼儿的姓名藏头诗,它写的太好了,都是吉祥的祝福,有语境,有内涵,仿佛家长取名时就是考虑到这些意义。

2.幼儿写对联方式:用Python批量制作成对联横批样式,幼儿用黑色笔描画。制作属于自己的独特对联。大部分幼儿对汉字不感兴趣,只是描红了。个别孩子颜色选择、画笔选择和添画图案上进行了设计。

后续:

门上扣子清理

因为横批封住了门,所以拍照期间,两位搭档老师都是从后门走来。

中午,搭档说:我刚才看见门上有白色东西,我想它们一直有吗?平时怎么没有注意到?”

我说:是我刚才贴的,我会拔下来的

第二天孩子们做“换装书”制作

我让他们把门上的白色扣子手抠下来,用在“换装书”作品上。两位女孩说:扣不动(黏贴太牢了)

于是我预先把扣子抠下一半,然后他们再硬拔下来。

门上的雌雄扣被开了个口子,孩子容易捏着边,硬拔了(照片没有拍)

依靠动作快的孩子们,总算把门上的扣子回收的收尾工作做好了。孩子们对“拔钉子”有一定的参与兴趣。

后续思考:

1、制作独一无二的名字对联,很有意义。家长看照片时觉得“很有新意。”

2、学号数字比较小,在红色背景下看不清楚,下次把学号字体换成黑体,用黑色。

3.、对联反面的扣子黏贴位置,如何确定

相关文章:

【教学类-89-02】20250128新年篇02——姓名藏头对联(星火讯飞+Python,五言对联,有横批)

背景需求: 过年了,我想用幼儿的名字写对联,但是我根本不会写,于是尝试让AI来写。 1.我班的孩子的名字都是2字和3字的 2.惊喜发现,AI它很快就能生成带名字的对联 但是观察发现,如果是二个名字的对联&#…...

装机爱好者的纯净工具箱

对于每一位电脑用户来说,新电脑到手后的第一件事通常是检测硬件性能。今天为大家介绍一款开源且无广告的硬件检测工具——入梦工具箱。 主要功能 硬件信息一目了然 打开入梦工具箱,首先看到的是硬件信息概览。这里不仅包含了内存、主板、显卡、硬盘等常…...

【新春不断更】数据结构与算法之美:二叉树

Hello大家好,我是但凡!很高兴我们又见面啦! 眨眼间已经到了2024年的最后一天,在这里我要首先感谢过去一年陪我奋斗的每一位伙伴,是你们给予我不断前行的动力。银蛇携福至,万象启新程。蛇年新春之际&#xf…...

网站结构优化:加速搜索引擎收录的关键

本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/9.html 网站结构优化对于加速搜索引擎收录至关重要。以下是一些关键策略,旨在通过优化网站结构来提高搜索引擎的抓取效率和收录速度: 一、合理规划网站架构 采用扁…...

Effective Objective-C 2.0 读书笔记—— objc_msgSend

Effective Objective-C 2.0 读书笔记—— objc_msgSend 文章目录 Effective Objective-C 2.0 读书笔记—— objc_msgSend引入——静态绑定和动态绑定OC之中动态绑定的实现方法签名方法列表 其他方法objc_msgSend_stretobjc_msgSend_fpretobjc_msgSendSuper 尾调用优化总结参考文…...

[MySQL]事务的隔离级别原理与底层实现

目录 1.为什么要有隔离性 2.事务的隔离级别 读未提交 读提交 可重复读 串行化 3.演示事务隔离级别的操作 查看与设置事务的隔离级别 演示读提交操作 演示可重复读操作 1.为什么要有隔离性 在真正的业务场景下,MySQL服务在同一时间一定会有大量的客户端进程…...

项目升级Sass版本或升级Element Plus版本遇到的问题

项目升级Sass版本或升级Element Plus版本遇到的问题 如果项目有需求需要用到高版本的Element Plus组件,则需要升级相对应的sass版本,Element 文档中有提示,2.8.5及以后得版本,sass最低支持的版本为1.79.0,所升级sass、…...

C++中,存储两个相同类型的数据,数据结构

在C中,存储两个相同类型的数据,可以使用多种数据结构。这里有几种常见且合适的选择: 简单的变量: 最直接的方式就是使用两个独立的变量。这种方法简单直观,但不够结构化。 cpp int a 5; int b 10; std::pair&#x…...

python实战(十五)——中文手写体数字图像CNN分类

一、任务背景 本次python实战,我们使用来自Kaggle的数据集《Chinese MNIST》进行CNN分类建模,不同于经典的MNIST数据集,我们这次使用的数据集是汉字手写体数字。除了常规的汉字“零”到“九”之外还多了“十”、“百”、“千”、“万”、“亿…...

[论文阅读] (37)CCS21 DeepAID:基于深度学习的异常检测(解释)

祝大家新春快乐,蛇年吉祥! 《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正&#xff0…...

Linux - 进程间通信(2)

目录 2、进程池 1)理解进程池 2)进程池的实现 整体框架: a. 加载任务 b. 先描述,再组织 I. 先描述 II. 再组织 c. 创建信道和子进程 d. 通过channel控制子进程 e. 回收管道和子进程 问题1: 解答1&#xff…...

Kafka 消费端反复 Rebalance: `Attempt to heartbeat failed since group is rebalancing`

文章目录 Kafka 消费端反复 Rebalance: Attempt to heartbeat failed since group is rebalancing1. Rebalance 过程概述2. 错误原因分析2.1 消费者组频繁加入或退出2.1.1 消费者故障导致频繁重启2.1.2. 消费者加入和退出导致的 Rebalance2.1.3 消费者心跳超时导致的 Rebalance…...

SpringBoot+Electron教务管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.查询课程表代码2.保存学生信息代码3.用户登录代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBootElectron框架开发的教务管理系统。首先&#xff…...

操作系统(Linux Kernel 0.11Linux Kernel 0.12)解读整理——内核初始化(main init)之控制台工作

前言 在 Linux 内核中,字符设备主要包括控制终端设备和串行终端设备,对这些设备的输入输出涉及控制台驱动程序,这包括键盘中断驱动程序 keyboard.S 和控制台显示驱动程序 console.c,还有终端驱动程序与上层程序之间的接口部分。 终端驱动程序…...

Autogen_core: Message and Communication

目录 完整代码代码解释1. 消息的数据类:2. 创建代理人(MyAgent):3. 创建和运行代理人的运行时环境:4. 根据发送者路由消息的代理(RoutedBySenderAgent):5. 创建和运行带路由的代理&a…...

ComfyUI工作流教程、软件使用、开发指导、模型下载

在人工智能和设计技术迅速发展的今天,AI赋能的工作流已成为创意设计与生产的重要工具。无论是图片处理、服装试穿,还是室内设计与3D建模,这些智能化的解决方案极大地提高了效率和创作质量。 为了帮助设计师、开发者以及AI技术爱好者更好地利用这些工具,我们整理了一份详尽…...

零基础Vue学习1——Vue学习前环境准备

目录 环境准备 创建Vue项目 项目目录说明 后续开发过程中常用命令 环境准备 安装开发工具:vscode、webstorm、idea都可以安装node:V22以上版本即可安装pnpm 不知道怎么安装的可以私信我教你方法 创建Vue项目 本地新建一个文件夹,之后在文件夹下打开…...

定西市建筑房屋轮廓数据shp格式gis无偏移坐标(字段有高度和楼层)内容测评

定西市建筑房屋轮廓数据是GIS(Geographic Information System,地理信息系统)领域的重要资源,用于城市规划、土地管理、环境保护等多个方面。这份2022年的数据集采用shp(Shapefile)格式,这是一种…...

汉语向编程指南

汉语向编程指南 一、引言王阳明代数与流形学习理论慢道缓行理性人类型指标系统为己之学与意气实体过程晏殊几何学半可分离相如矩阵与生成气质邻域镶嵌气度曲面细分生成气质邻域镶嵌气度曲面细分社会科学概论琴生生物机械科技工业研究所软凝聚态物理开发工具包琴生生物机械 报告…...

Writing an Efficient Vulkan Renderer

本文出自GPU Zen 2。 Vulkan 是一个新的显式跨平台图形 API。它引入了许多新概念,即使是经验丰富的图形程序员也可能不熟悉。Vulkan 的主要目标是性能——然而,获得良好的性能需要深入了解这些概念及其高效应用方法,以及特定驱动程序实现的实…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

如何在网页里填写 PDF 表格?

有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据&#xff…...

C++ 设计模式 《小明的奶茶加料风波》

👨‍🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类&#xff0c;将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix&#xff0c;将上述三个类翻入其中&#xff0c;通过它管理每个音乐…...

python打卡day49@浙大疏锦行

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...