
背景需求:
前期制作了动物数独N宫格,包含四种大小尺寸,
【教学类-52-16】20241126动物数独_商品修正版(N宫格通用版3-10宫格)0图、1图、2图、6图、有答案、无答案 组合版24套_5x5格子除去一个24格子份6份取14个连3条线-CSDN博客文章浏览阅读531次。【教学类-52-16】20241126动物数独_商品修正版(N宫格通用版3-10宫格)0图、1图、2图、6图、有答案、无答案 组合版24套_5x5格子除去一个24格子份6份取14个连3条线
https://blog.csdn.net/reasonsummer/article/details/144041503?spm=1011.2415.3001.5331
但是,我看到生成的图片中,数独空格是随机抽取的,因此常出现,一行连续2-3空、一列连续2-3空的情况,增加了破译难度,我个人希望,空格分散一点,尽量不要有连续2空的情况。




我希望横向、纵向不要有连续多个空格,空格尽量分散。
用deepseek修改原来的代码。

前后修改了一天,生成50多次,终于写出一个可以使用的代码。
代码展示:
# -*- coding:utf-8 -*-
'''
制作动物/脸谱数独N宫格通用版(3-10的黏贴关卡 A4 1图2图6图的所有组合 还有一个限定A4大小的0图(3-6宫格)
1.无答案:9种3:3,两两组合
2.有答案:27种 3:3:3,三三组合(实际需要其中9种)
3.横竖两个不能都是空格,空格尽量分散排列,如9格,目前1-5可以分散,空额不相连,6-9不行)
作者:AI对话大师,deepseek、阿夏
时间:2025年08月03日
'''
import os
import time
from docx import Document
from docx.shared import Cm, Pt, RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from win32com.client import constants, gencache
from win32com.client.gencache import EnsureDispatch
from datetime import datetime
import random
import shutil
import xlwt
import xlrd
from PyPDF2 import PdfMerger
from docx.shared import Pt, Cm, RGBColor
from docx.oxml.shared import qn
num=1
hsall=int(input('几宫格?(3-10)\n'))
start=0
end=hsall
start_time = datetime.now()
hs=hsall
path=fr'C:\Users\jg2yXRZ\OneDrive\桌面\20250802动物数独N宫格原始6图'
A4size=[6.5,4.88,3.9,3.25,2.79,2.44,2.17]
A4gz=[3,4,5,6,7,8,9]
A4pg=[3,4,5,6,7,8,9]
A4gzs=[3,4,5,6,7,8,9]
psize=[19.6,14.1,9.39]
gzsize=[6.4,4.8,3.84,3.2,2.74,2.39,2.12,1.91]
gzsgg=list(range(3, 10))
pg=[1,2,6]
gzs=[1,2,2]
print('-----第一板块、动物操作卡(大图片卡一页1图、1页2图 一页6图)-------')
# Get page settings based on hs value
for w in range(len(A4gz)):
if hs == A4gz[w]:
psize.append(A4size[w])
pg = [1, 2, 6, A4pg[w]]
gzs = [1, 2, 2, A4gzs[w]]
k = ['1图关卡', '2图关卡', '6图关卡', f'A4的{hs}图卡片']
print(k)
for pt in range(len(pg)):
# Create temp folders
temp_word_path = os.path.join(path, '零时Word')
temp_pdf_path = os.path.join(path, '05操作卡pdf')
os.makedirs(temp_word_path, exist_ok=True)
os.makedirs(temp_pdf_path, exist_ok=True)
# Load template document
doc = Document(os.path.join(path, f'动物数独({k[pt]}).docx'))
table = doc.tables[0]
# Get animal images
pic_folder = os.path.join(path, '02动物图片')
pic_list = [os.path.join(pic_folder, f) for f in os.listdir(pic_folder)][start:end] * hs
# Group images based on layout
group_size = pg[pt]*pg[pt] if pt == 3 else pg[pt]
groups = [pic_list[i:i + group_size] for i in range(0, len(pic_list), group_size)]
for group_idx, group in enumerate(groups):
doc = Document(os.path.join(path, f'动物数独({k[pt]}).docx'))
table = doc.tables[0]
for cell_idx, img_file in enumerate(group):
row = int(cell_idx / gzs[pt])
col = cell_idx % gzs[pt]
cell = table.cell(row, col)
cell.paragraphs[0].clear()
if os.path.exists(img_file):
run = cell.paragraphs[0].add_run()
run.add_picture(img_file, width=Cm(psize[pt]), height=Cm(psize[pt]))
cell.paragraphs[0].alignment = 1
# Add title for A4 layout
if pt == 3:
title_table = doc.tables[1]
title_cell = title_table.cell(0, 0)
title_cell.text = f'动物数独 {hs}*{hs} 操作