当前位置: 首页 > 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 的主要目标是性能——然而,获得良好的性能需要深入了解这些概念及其高效应用方法,以及特定驱动程序实现的实…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...