【教学类-29-06】20250809灰色门牌号-黏贴版(6层*5间层2间)题目和答案(剪贴卡片)
背景需求:
原来作过一套适合中班操作的门牌号,突出数字差异,一行只贴一个
【教学类-29-04】20250514《门牌号-黏贴版(6层*5间\6层2间)灰底下划线+楼号深黑,房间号浅灰》-CSDN博客文章浏览阅读992次,点赞19次,收藏18次。【教学类-29-04】20250514《门牌号-黏贴版(6层*5间\6层2间)灰底下划线+楼号深黑,房间号浅灰》https://blog.csdn.net/reasonsummer/article/details/147952023?spm=1011.2415.3001.5331
根据以下代码,制作题目卡和答案卡
【教学类-29-05】20250809灰色门牌号6*5黏贴版(0空2种、5空、10空、15空、20空)题目和答案(剪贴卡片)-CSDN博客文章浏览阅读574次,点赞12次,收藏12次。【教学类-29-05】20250809灰色门牌号6*5黏贴版(0空2种、5空、10空、15空、20空)题目和答案(剪贴卡片)https://blog.csdn.net/reasonsummer/article/details/150070133?spm=1011.2415.3001.5331
设计过程:
word模板
把每页2个表格,做成每页4个表格,便于在表格1、3内写入编号数字、表2、4内写入门牌数字。
都是用deep seek写的全部代码(虽然不用自己写,等它修改和生成全部代码300多行,每次要很长时间),修改了三十几次,终于成功了。
代码展示:
5*5房间,每行一空代码(隐藏了层与间的提示数字代码)
# 门牌号黏贴游戏(适合中班)
# 修改版:6层5间,每层空缺1个,主表格从第2列开始,粘贴区在8-10行2-3列
# 每页两份不同题目,且题目与答案对应
# 代码:DeepSeek,阿夏
# 时间:20250513import random
import os
import time
from docx import Document
from docx.shared import Pt, RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import parse_xml
from docx2pdf import convert
from PyPDF2 import PdfFileMerger
import shutil# 定义颜色常量
DARK_GRAY = RGBColor(0, 0, 0) # 第一个数字颜色
LIGHT_GRAY = RGBColor(170, 170, 170) # 第2-3个数字颜色# 路径设置
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250808黏贴门牌号'
os.makedirs(path, exist_ok=True)# 用户输入
num = int(input('生成多少份(双数按班级人数输入28人,实际打印14份)\n'))
size = 35 # 数字大小
height1 = 5 # 楼层数
weight1 = 5 # 每层房间数(改为2间)# 房间表格位置(主表格从第2列开始)
bg1 = []
for x1 in range(height1-1, -1, -1): # 从顶层到底层for y1 in range(0, weight1): # 从第1列开始ww1 = f"{x1}{y1}"bg1.append(ww1)
print(bg1)# 粘贴数字区域位置(8-10行,2-3列)
paste_positions = []
for row in range(5, 6): # Word行号从0开始,只有一行黏贴片 索引5行for col in range(0, 5): # 列号从0开始,1=第2列paste_positions.append(f"{row}{col}")
print(paste_positions)# 新建临时文件夹
temp_folder = path + r'\零时Word'
os.makedirs(temp_folder, exist_ok=True)n = int(num/2) # 实际打印份数(每页2份)def add_number_to_table(table, number_text):"""在表格的(0,1)位置添加编号"""try:cell = table.cell(0, 1)cell.text = ""paragraph = cell.paragraphs[0]run = paragraph.add_run(number_text)run.font.name = '黑体'run._element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')run.font.size = Pt(14)run.font.color.rgb = RGBColor(0, 0, 0)paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.LEFTexcept Exception as e:print(f"添加编号时出错: {e}")# 为每份文档预先生成两份不同的题目数据
doc_data = []
for z in range(n):# 第一份题目数据N1 = [f"{x}{y:02d}" for x in range(1, height1+1) for y in range(1, weight1+1)]E1 = [N1[e*weight1 : e*weight1+weight1] for e in range(height1)]G1 = [floor_rooms[random.randint(0, weight1-1)] for floor_rooms in E1]C1_1 = [" " if room in G1 else room for room in N1]# 第二份题目数据(确保与第一份不同)while True:N2 = [f"{x}{y:02d}" for x in range(1, height1+1) for y in range(1, weight1+1)]E2 = [N2[e*weight1 : e*weight1+weight1] for e in range(height1)]G2 = [floor_rooms[random.randint(0, weight1-1)] for floor_rooms in E2]C1_2 = [" " if room in G2 else room for room in N2]# 确保两份题目不同(比较G1和G2)if G1 != G2:breakdoc_data.append({'N1': N1, 'G1': G1, 'C1_1': C1_1, # 第一份题目数据'N2': N2, 'G2': G2, 'C1_2': C1_2 # 第二份题目数据})# 生成题目和答案文档
for doc_type in ['题目', '答案']:for z in range(n): # 生成每份文档doc = Document(path + r'\03_01黏贴门牌号模板竖版2份(5层5间).docx')# 获取预先生成的两份题目数据data = doc_data[z]# 确保文档中有4个表格if len(doc.tables) >= 4:# 设置编号(表1和表3)if doc_type == '题目':add_number_to_table(doc.tables[0], f"题目:0301_{z*2+1:02}\n{height1} 空格 每行1空")add_number_to_table(doc.tables[2], f"题目:0301_{z*2+2:02}\n{height1} 空格 每行1空")else:add_number_to_table(doc.tables[0], f"答案:0301_{z*2+1:02}\n{height1} 空格 每行1空")add_number_to_table(doc.tables[2], f"答案:0301_{z*2+2:02}\n{height1} 空格 每行1空")# 处理第一个题目/答案(表格1)table1 = doc.tables[1]N = data['N1'] if doc_type == '答案' else NoneG = data['G1']C1 = data['C1_1']# 写入第一个表格for t1 in range(len(bg1)):pos = bg1[t1]row, col = int(pos[0]), int(pos[1])try:cell = table1.cell(row, col)cell.paragraphs[0].clear()if doc_type == '题目':if C1[t1].strip():para = cell.paragraphs[0]for i, char in enumerate(C1[t1].strip()):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERelif doc_type == '答案':para = cell.paragraphs[0]room_num = N[t1]for i, char in enumerate(room_num):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')if room_num in G:shading = parse_xml(f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 'f'w:fill="c0c0c0"/>')cell._tc.get_or_add_tcPr().append(shading)para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERexcept IndexError:print(f"跳过不存在的单元格: 表格1 行{row} 列{col}")continue# 题目文档写入粘贴数字(第一个题目)if doc_type == '题目':for t2 in range(min(len(G), len(paste_positions))):pos = paste_positions[t2]row, col = int(pos[0]), int(pos[1])try:cell = table1.cell(row, col)cell.paragraphs[0].clear()para = cell.paragraphs[0]for i, char in enumerate(G[t2]):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run.font.underline = Truerun.font.bold = Truerun._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERshading = parse_xml(f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 'f'w:fill="c0c0c0"/>')cell._tc.get_or_add_tcPr().append(shading)except IndexError:print(f"跳过不存在的粘贴单元格: 表格1 行{row} 列{col}")continue# 处理第二个题目/答案(表格3)table2 = doc.tables[3]N = data['N2'] if doc_type == '答案' else NoneG = data['G2']C1 = data['C1_2']# 写入第二个表格for t1 in range(len(bg1)):pos = bg1[t1]row, col = int(pos[0]), int(pos[1])try:cell = table2.cell(row, col)cell.paragraphs[0].clear()if doc_type == '题目':if C1[t1].strip():para = cell.paragraphs[0]for i, char in enumerate(C1[t1].strip()):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERelif doc_type == '答案':para = cell.paragraphs[0]room_num = N[t1]for i, char in enumerate(room_num):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')if room_num in G:shading = parse_xml(f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 'f'w:fill="c0c0c0"/>')cell._tc.get_or_add_tcPr().append(shading)para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERexcept IndexError:print(f"跳过不存在的单元格: 表格3 行{row} 列{col}")continue# 题目文档写入粘贴数字(第二个题目)if doc_type == '题目':for t2 in range(min(len(G), len(paste_positions))):pos = paste_positions[t2]row, col = int(pos[0]), int(pos[1])try:cell = table2.cell(row, col)cell.paragraphs[0].clear()para = cell.paragraphs[0]for i, char in enumerate(G[t2]):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run.font.underline = Truerun.font.bold = Truerun._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERshading = parse_xml(f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 'f'w:fill="c0c0c0"/>')cell._tc.get_or_add_tcPr().append(shading)except IndexError:print(f"跳过不存在的粘贴单元格: 表格3 行{row} 列{col}")continue# # 设置楼层和房间号格式(两个表格都需要设置)# for table in [table1, table2]:# for y2 in range(7):# try:# cell = table.cell(y2, 0)# shading = parse_xml(# f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '# f'w:fill="d3d3d3"/>'# )# cell._tc.get_or_add_tcPr().append(shading)# cell.paragraphs[0].clear()# para = cell.paragraphs[0]# run = para.add_run(str(6-y2) if (6-y2) != 0 else '')# run.font.name = '华文新魏'# run.font.size = Pt(size)# run.font.color.rgb = DARK_GRAY# run._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')# para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER# except IndexError:# print(f"跳过不存在的楼层单元格: 行{y2} 列0")# continue# for y3 in range(1, 3):# try:# cell = table.cell(6, y3)# shading = parse_xml(# f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" '# f'w:fill="d3d3d3"/>'# )# cell._tc.get_or_add_tcPr().append(shading)# cell.paragraphs[0].clear()# para = cell.paragraphs[0]# run = para.add_run(f"{y3:02d}室")# run.font.name = '华文新魏'# run.font.size = Pt(size)# run.font.color.rgb = LIGHT_GRAY# run._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')# para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER# except IndexError:# print(f"跳过不存在的房间号单元格: 行6 列{y3}")# continue# 保存文档doc.save(f"{temp_folder}\\{doc_type}_{z+1:02d}.docx")time.sleep(1)convert(f"{temp_folder}\\{doc_type}_{z+1:02d}.docx", f"{temp_folder}\\{doc_type}_{z+1:02d}.pdf")time.sleep(1)# 合并PDF
def merge_pdfs(file_pattern, output_name):pdfs = sorted([f for f in os.listdir(temp_folder) if f.startswith(file_pattern) and f.endswith('.pdf')])if not pdfs:returnmerger = PdfFileMerger()for pdf in pdfs:merger.append(os.path.join(temp_folder, pdf))output_path = os.path.join(path, f"0301_门牌号_{height1}乘{weight1}_每行1空_{output_name}_共{n}份.pdf")merger.write(output_path)merger.close()print(f"已生成: {output_path}")merge_pdfs("题目", "01题目版")
merge_pdfs("答案", "02答案版")# 清理临时文件
shutil.rmtree(temp_folder)
print("操作完成!")
生成35份,一页2张,实际17页
以上一组题目和答案都一一对应的。再检查一组
6*2房间,每行一空代码(包含层与间的提示数字代码)
# 门牌号黏贴游戏(适合中班)
# 修改版:6层2间,每层空缺1个,主表格从第2列开始,粘贴区在8-10行2-3列
# 每页两份不同题目,且题目与答案对应
# 代码:DeepSeek,阿夏
# 时间:20250513import random
import os
import time
from docx import Document
from docx.shared import Pt, RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import parse_xml
from docx2pdf import convert
from PyPDF2 import PdfFileMerger
import shutil# 定义颜色常量
DARK_GRAY = RGBColor(0, 0, 0) # 第一个数字颜色
LIGHT_GRAY = RGBColor(170, 170, 170) # 第2-3个数字颜色# 路径设置
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250808黏贴门牌号'
os.makedirs(path, exist_ok=True)# 用户输入
num = int(input('生成多少份(双数按班级人数输入28人,实际打印14份)\n'))
size = 35 # 数字大小
height1 = 6 # 楼层数
weight1 = 2 # 每层房间数(改为2间)# 房间表格位置(主表格从第2列开始)
bg1 = []
for x1 in range(height1-1, -1, -1): # 从顶层到底层for y1 in range(1, weight1+1): # 从第2列开始ww1 = f"{x1}{y1}"bg1.append(ww1)# 粘贴数字区域位置(8-10行,2-3列)
paste_positions = []
for row in range(7, 10): # Word行号从0开始,7=第8行for col in range(1, 3): # 列号从0开始,1=第2列paste_positions.append(f"{row}{col}")# 新建临时文件夹
temp_folder = path + r'\零时Word'
os.makedirs(temp_folder, exist_ok=True)n = int(num/2) # 实际打印份数(每页2份)def add_number_to_table(table, number_text):"""在表格的(0,1)位置添加编号"""try:cell = table.cell(0, 1)cell.text = ""paragraph = cell.paragraphs[0]run = paragraph.add_run(number_text)run.font.name = '黑体'run._element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')run.font.size = Pt(14)run.font.color.rgb = RGBColor(0, 0, 0)paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.LEFTexcept Exception as e:print(f"添加编号时出错: {e}")# 为每份文档预先生成两份不同的题目数据
doc_data = []
for z in range(n):# 第一份题目数据N1 = [f"{x}{y:02d}" for x in range(1, height1+1) for y in range(1, weight1+1)]E1 = [N1[e*weight1 : e*weight1+weight1] for e in range(height1)]G1 = [floor_rooms[random.randint(0, weight1-1)] for floor_rooms in E1]C1_1 = [" " if room in G1 else room for room in N1]# 第二份题目数据(确保与第一份不同)while True:N2 = [f"{x}{y:02d}" for x in range(1, height1+1) for y in range(1, weight1+1)]E2 = [N2[e*weight1 : e*weight1+weight1] for e in range(height1)]G2 = [floor_rooms[random.randint(0, weight1-1)] for floor_rooms in E2]C1_2 = [" " if room in G2 else room for room in N2]# 确保两份题目不同(比较G1和G2)if G1 != G2:breakdoc_data.append({'N1': N1, 'G1': G1, 'C1_1': C1_1, # 第一份题目数据'N2': N2, 'G2': G2, 'C1_2': C1_2 # 第二份题目数据})# 生成题目和答案文档
for doc_type in ['题目', '答案']:for z in range(n): # 生成每份文档doc = Document(path + r'\03_02黏贴门牌号模板竖版2份(6层2间).docx')# 获取预先生成的两份题目数据data = doc_data[z]# 确保文档中有4个表格if len(doc.tables) >= 4:# 设置编号(表1和表3)if doc_type == '题目':add_number_to_table(doc.tables[0], f"题目:0302_{z*2+1:02}\n{height1} 空格 每行1空")add_number_to_table(doc.tables[2], f"题目:0302_{z*2+2:02}\n{height1} 空格 每行1空")else:add_number_to_table(doc.tables[0], f"答案:0302_{z*2+1:02}\n{height1} 空格 每行1空")add_number_to_table(doc.tables[2], f"答案:0302_{z*2+2:02}\n{height1} 空格 每行1空")# 处理第一个题目/答案(表格1)table1 = doc.tables[1]N = data['N1'] if doc_type == '答案' else NoneG = data['G1']C1 = data['C1_1']# 写入第一个表格for t1 in range(len(bg1)):pos = bg1[t1]row, col = int(pos[0]), int(pos[1])try:cell = table1.cell(row, col)cell.paragraphs[0].clear()if doc_type == '题目':if C1[t1].strip():para = cell.paragraphs[0]for i, char in enumerate(C1[t1].strip()):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERelif doc_type == '答案':para = cell.paragraphs[0]room_num = N[t1]for i, char in enumerate(room_num):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')if room_num in G:shading = parse_xml(f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 'f'w:fill="c0c0c0"/>')cell._tc.get_or_add_tcPr().append(shading)para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERexcept IndexError:print(f"跳过不存在的单元格: 表格1 行{row} 列{col}")continue# 题目文档写入粘贴数字(第一个题目)if doc_type == '题目':for t2 in range(min(len(G), len(paste_positions))):pos = paste_positions[t2]row, col = int(pos[0]), int(pos[1])try:cell = table1.cell(row, col)cell.paragraphs[0].clear()para = cell.paragraphs[0]for i, char in enumerate(G[t2]):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run.font.underline = Truerun.font.bold = Truerun._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERshading = parse_xml(f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 'f'w:fill="c0c0c0"/>')cell._tc.get_or_add_tcPr().append(shading)except IndexError:print(f"跳过不存在的粘贴单元格: 表格1 行{row} 列{col}")continue# 处理第二个题目/答案(表格3)table2 = doc.tables[3]N = data['N2'] if doc_type == '答案' else NoneG = data['G2']C1 = data['C1_2']# 写入第二个表格for t1 in range(len(bg1)):pos = bg1[t1]row, col = int(pos[0]), int(pos[1])try:cell = table2.cell(row, col)cell.paragraphs[0].clear()if doc_type == '题目':if C1[t1].strip():para = cell.paragraphs[0]for i, char in enumerate(C1[t1].strip()):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERelif doc_type == '答案':para = cell.paragraphs[0]room_num = N[t1]for i, char in enumerate(room_num):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')if room_num in G:shading = parse_xml(f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 'f'w:fill="c0c0c0"/>')cell._tc.get_or_add_tcPr().append(shading)para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERexcept IndexError:print(f"跳过不存在的单元格: 表格3 行{row} 列{col}")continue# 题目文档写入粘贴数字(第二个题目)if doc_type == '题目':for t2 in range(min(len(G), len(paste_positions))):pos = paste_positions[t2]row, col = int(pos[0]), int(pos[1])try:cell = table2.cell(row, col)cell.paragraphs[0].clear()para = cell.paragraphs[0]for i, char in enumerate(G[t2]):run = para.add_run(char)run.font.color.rgb = DARK_GRAY if i == 0 else LIGHT_GRAYrun.font.name = '华文新魏'run.font.size = Pt(size)run.font.underline = Truerun.font.bold = Truerun._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERshading = parse_xml(f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 'f'w:fill="c0c0c0"/>')cell._tc.get_or_add_tcPr().append(shading)except IndexError:print(f"跳过不存在的粘贴单元格: 表格3 行{row} 列{col}")continue# 设置楼层和房间号格式(两个表格都需要设置)for table in [table1, table2]:for y2 in range(7):try:cell = table.cell(y2, 0)shading = parse_xml(f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 'f'w:fill="d3d3d3"/>')cell._tc.get_or_add_tcPr().append(shading)cell.paragraphs[0].clear()para = cell.paragraphs[0]run = para.add_run(str(6-y2) if (6-y2) != 0 else '')run.font.name = '华文新魏'run.font.size = Pt(size)run.font.color.rgb = DARK_GRAYrun._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERexcept IndexError:print(f"跳过不存在的楼层单元格: 行{y2} 列0")continuefor y3 in range(1, 3):try:cell = table.cell(6, y3)shading = parse_xml(f'<w:shd xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" 'f'w:fill="d3d3d3"/>')cell._tc.get_or_add_tcPr().append(shading)cell.paragraphs[0].clear()para = cell.paragraphs[0]run = para.add_run(f"{y3:02d}室")run.font.name = '华文新魏'run.font.size = Pt(size)run.font.color.rgb = LIGHT_GRAYrun._element.rPr.rFonts.set(qn('w:eastAsia'), '华文新魏')para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTERexcept IndexError:print(f"跳过不存在的房间号单元格: 行6 列{y3}")continue# 保存文档doc.save(f"{temp_folder}\\{doc_type}_{z+1:02d}.docx")time.sleep(1)convert(f"{temp_folder}\\{doc_type}_{z+1:02d}.docx", f"{temp_folder}\\{doc_type}_{z+1:02d}.pdf")time.sleep(1)# 合并PDF
def merge_pdfs(file_pattern, output_name):pdfs = sorted([f for f in os.listdir(temp_folder) if f.startswith(file_pattern) and f.endswith('.pdf')])if not pdfs:returnmerger = PdfFileMerger()for pdf in pdfs:merger.append(os.path.join(temp_folder, pdf))output_path = os.path.join(path, f"0302_门牌号_{height1}乘{weight1}每行1空_{output_name}_共{n}份.pdf")merger.write(output_path)merger.close()print(f"已生成: {output_path}")merge_pdfs("题目", "01题目版")
merge_pdfs("答案", "02答案版")# 清理临时文件
shutil.rmtree(temp_folder)
print("操作完成!")
运行35份,实际取整34,一页两份就是17页
题目和答案是匹配的
感悟:
1、用多个AI编程工具(deep seek、豆包、星火讯飞)综合编程(写不出就换一个工具继续写),输入中文的需求内容,让AI编程来编写,能提供多种思路。实现更优质的结果。
2、但是页更加深刻地感到自己地编程能力弱化,有时候AI只提供了关键点修改的部分代码,但我不知道要插在哪里,还是让它给我“全部代码”,这就增加编写的时长,需要几分钟的等候。
3、用AI写编程代码是唯一的手段,已经无可避免依赖它,而失去了自己思考的能力。