【教学类-64-05】20240625彩棒鱼骨图(二)AB排列 6.5*1CM 6选2根 30种

背景需求:

【教学类-64-04】20240619彩棒鱼骨图(一)6.5*1CM 6根棒子720种-CSDN博客文章浏览阅读897次,点赞23次,收藏13次。【教学类-64-04】20240619彩棒鱼骨图(一)6.5*1CM 6根棒子720种https://blog.csdn.net/reasonsummer/article/details/139813897?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139813897%22%2C%22source%22%3A%22reasonsummer%22%7D

前期制作了6根彩色冰棍棒的不重复排列720种。

本次想制作ABAB的排序方式。

也就是从6种颜色中任意选择2个颜色*3,测算发现6选2一共有30种不重复的排列。

'''
冰棍棒六色720种 鱼骨图 红橙黄绿蓝紫 AB排序系列6抽2不重复30种 短款)6.5*1(长款) 11.5*1 大号(15*1.8) -乱序
时间:2024年6月26日
作者:星火讯飞 阿夏'''
from PIL import Image, ImageDraw
import os,random
from PIL import ImageFontpath=r'C:\Users\jg2yXRZ\OneDrive\桌面\鱼骨图'
new_path=path+r'\01jpg(6.5乘1)'
os.makedirs(new_path,exist_ok=True)# nnn=int(input('1.固定、2、随机'))name='6.5乘1'print('-----1、制作图卡--------')
# 六色所有排序方式 720种
import itertools
colors = ['01red', '02orange', '03yellow', '04green', '05blue', '06purple']
# 使用itertools.permutations生成所有不重复排序方式
combinations = list(itertools.permutations(colors,2))
result = sorted(combinations)print(result)
print(len(result))# 30种# 每个()元祖里的内容乘以3
perms = [t * 3 for t in result]
print(perms)# # 打乱
# random.shuffle(perms)
# print(perms)
# print(len(perms))
# 720个不重复的方法
# 720有几位数(个数)num_digits = len(str(len(perms)))
# 30
print(num_digits)
# 720就是3位数for a in range(len(perms)):# 打开图片image = Image.open(path+r'\鱼骨图.jpg')# 创建一个800*600的画布long=844wide=378s=6# 6根棒子canvas = Image.new('RGB', (long, wide), 'white')draw = ImageDraw.Draw(canvas)# 定义圆角矩形的参数# 棒子的圆心radius = 20# 左侧间距left = 220#  右侧间距right = 180# 棒子的间距padding = 30# 棒子的宽rect_width = float((long-left-right-padding*7)/6)print(rect_width)# 40# 棒子的高rect_height = float(rect_width*6.5)# 棒子的高度坐标padding2=float((wide- rect_height-20))# wide-padding*2# 计算每个圆角矩形的位置rect_positions = [(padding+left, padding2),(rect_width + padding * 2+left, padding2),(rect_width * 2 + padding * 3+left, padding2),(rect_width * 3 + padding * 4+left, padding2),(rect_width * 4 + padding * 5+left, padding2),(rect_width * 5 + padding * 6+left, padding2)]colors = perms[a]  #  绘制圆角矩形draw = ImageDraw.Draw(image)# 绘制圆角矩形for i, position in enumerate(rect_positions):x, y = positiondraw.rounded_rectangle([x, y, x + rect_width, y + rect_height], radius, fill=colors[i][2:], outline='black', width=1)# 设置字体路径和大小font_path = r'C:\Windows\Fonts\AdobeHeitiStd-Regular.otf'font_size = 40# 加载字体font = ImageFont.truetype(font_path, font_size)# 在指定位置绘制文字draw.text((200, 30), f'彩色鱼骨图AB({name}CM)-{a+1:03d}', font=font, fill='black')# 保存图片image.save(new_path + fr'\{a+1:0{num_digits}d}.png')print('-----2、制作大图--------')
# 六色所有排序方式 720种# 使用itertools.permutations生成所有不重复排序方式from PIL import Image, ImageDraw
import itertoolspath = r'C:\Users\jg2yXRZ\OneDrive\桌面\鱼骨图'
new_path_jpg = path + r'\02jpg(6.5乘1)'
os.makedirs(new_path_jpg, exist_ok=True)name = '6.5乘1'for b in range(2):image = Image.open(path + r'\鱼骨图.jpg')long = 844wide = 378s = 6canvas = Image.new('RGB', (long, wide), 'white')draw = ImageDraw.Draw(canvas)radius = 20left = 220right = 180padding = 30rect_width = float((long - left - right - padding * 7) / 6)print(rect_width)rect_height = float(rect_width * 6.5)padding2 = float((wide - rect_height - 20))rect_positions = [(padding + left, padding2),(rect_width + padding * 2 + left, padding2),(rect_width * 2 + padding * 3 + left, padding2),(rect_width * 3 + padding * 4 + left, padding2),(rect_width * 4 + padding * 5 + left, padding2),(rect_width * 5 + padding * 6 + left, padding2)]colors = perms[a]draw = ImageDraw.Draw(image)# 绘制圆角矩形for i, position in enumerate(rect_positions):x, y = positiondraw.rounded_rectangle([x, y, x + rect_width, y + rect_height], radius, fill='white', outline='black', width=1)# 设置字体路径和大小font_path = r'C:\Windows\Fonts\AdobeHeitiStd-Regular.otf'font_size = 40# 加载字体font = ImageFont.truetype(font_path, font_size)# 在指定位置绘制文字draw.text((150, 30), f'彩色鱼骨图AB({name}CM)-操作图{b+1}', font=font, fill='black')# 保存图片    image.save(new_path_jpg + fr'\鱼骨图{name}_大图{b+1}.png')print('-----3、图卡制作成图片格式----------')import os
import random
from docx import Document
from docx.shared import Cm
from docx2pdf import convert
from PyPDF2 import PdfFileMergernew_folder = path + r'\零时文件夹'
os.makedirs(new_folder, exist_ok=True)image_files = [os.path.join(new_path, file) for file in os.listdir(new_path) if file.endswith('.png')]
# random.shuffle(image_files)grouped_files = [image_files[i:i + 6] for i in range(0, len(image_files), 6)]for group_index, group in enumerate(grouped_files):doc = Document(path + r'\鱼骨图题卡.docx')table = doc.tables[0]for cell_index, image_file in enumerate(group):cell = table.cell(int(cell_index / 2), cell_index % 2)cell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run()run.add_picture(image_file, width=Cm(13.92), height=Cm(6.49))doc.save(os.path.join(new_folder, f'{group_index + 1:03d}.docx'))pdf_output_path = path + fr'\\鱼骨图AB({name})题卡{len(perms)}张_固定顺序.pdf'
# pdf_output_path = path + fr'\\鱼骨图AB({name})题卡{len(perms)}张_随机顺序.pdf'for docx_file in os.listdir(new_folder):if docx_file.endswith('.docx'):docx_path = os.path.join(new_folder, docx_file)convert(docx_path, docx_path.replace('.docx', '.pdf'))merger = PdfFileMerger()
for pdf_file in os.listdir(new_folder):if pdf_file.endswith('.pdf'):pdf_path = os.path.join(new_folder, pdf_file)merger.append(pdf_path)merger.write(pdf_output_path)
merger.close()import shutil,time
shutil.rmtree(new_folder)print('-----4、图卡制作成操作图格式----------')import os
import random
from docx import Document
from docx.shared import Cm
from docx2pdf import convert
from PyPDF2 import PdfFileMergernew_folder = path + r'\零时文件夹'
os.makedirs(new_folder, exist_ok=True)image_files = [os.path.join(new_path_jpg, file) for file in os.listdir(new_path_jpg) if file.endswith('.png')]
# random.shuffle(image_files)grouped_files = [image_files[i:i + 2] for i in range(0, len(image_files), 2)]for group_index, group in enumerate(grouped_files):doc = Document(path + r'\鱼骨图操作图.docx')table = doc.tables[0]for cell_index, image_file in enumerate(group):cell = table.cell(int(cell_index / 1), cell_index % 1)cell_paragraph = cell.paragraphs[0]cell_paragraph.clear()run = cell_paragraph.add_run()run.add_picture(image_file, width=Cm(21.62), height=Cm(9.7))doc.save(os.path.join(new_folder, f'{group_index + 1:03d}.docx'))pdf_output_path = path + fr'\\鱼骨图AB({name})操作卡2张_固定顺序.pdf'
# pdf_output_path = path + fr'\\鱼骨图AB({name})操作卡2张_随机顺序.pdf'for docx_file in os.listdir(new_folder):if docx_file.endswith('.docx'):docx_path = os.path.join(new_folder, docx_file)convert(docx_path, docx_path.replace('.docx', '.pdf'))merger = PdfFileMerger()
for pdf_file in os.listdir(new_folder):if pdf_file.endswith('.pdf'):pdf_path = os.path.join(new_folder, pdf_file)merger.append(pdf_path)merger.write(pdf_output_path)
merger.close()
time.sleep(5)import shutil
shutil.rmtree(new_folder)
shutil.rmtree(new_path)
shutil.rmtree(new_path_jpg)

一共有两种抽取方式

第一种是固定抽取,从"红"开始选择

我默认“红橙黄绿蓝紫”为固定顺序,这里的颜色前面加了01、02,因为如果按照字母,blue排在最前面,而不是red,就会出现乱序。

第一根棒子都是“红色”,依次配对“橙黄绿蓝紫”

最后一根棒子都是“紫色”,依次配对“红橙黄绿蓝”

操作图

 第二种是随机抽取,打乱顺序,每次出现顺序都不同

我默认“红橙黄绿蓝紫”为固定顺序,这里的颜色前面加了01、02,因为如果按照字母,blue排在最前面,而不是red,就会出现乱序。

第1次随机 001-006

第2次随机 001-006

操作图

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

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

相关文章

JetBrains Rider 2024安装教程

一、下载Rider 1、进入官网,点击“下载” 2、下载完毕 二、安装Rider 1、双击下载的exe文件 2、点击“下一步” 3、可以点击“浏览”选择安装路径,之后点击“下一步” 4、选中图中四项,点击“下一步” 5、选中图中四项,点击“下…

Go语言学习:每日一练1

Go语言学习:每日一练1 目录 Go语言学习:每日一练1变量声明函数定义流程控制 ifrange遍历switch 变量声明 package main//定义变量 var a 1 const Message “hello,world”func main() {b : 2 //短变量声明var c 3c TestMethod(a, b, c)} //定义函数…

进程、CPU、MMU与PCB之间的关系

目录 进程与cpu(中央处理器) 源代码、程序、cpu与进程的关系 cpu超线程 CPU的简易架构与处理数据过程 进程与MMU(内存管理单元) mmu作用 cpu和mmu的关系 进程与PCB(进程控制块) PCB介绍与内部成员…

组合数学、圆排列、离散数学多重集合笔记

自用 如果能帮到您,那也值得高兴 知识点 离散数学经典题目 多重集合组合 补充容斥原理公式 隔板法题目 全排列题目:

Loki部署及使用

简介 loki 是云原生的日志服务,本文讲解loki的部署,日志接入和查询日志的简单使用。 理论 Loki 分两部分,Loki 是日志引擎部分,Promtail 是收集日志端。 Loki 是主服务器,负责存储日志和处理查询 。 promtail 是代理,负责收集日志并将其发送给 loki 。 promtail 是日志…

武汉星起航:全球化舞台,中国跨境电商品牌力与竞争力双提升

随着全球化步伐的加快和数字技术的迅猛发展,跨境出口电商模式已经成为中国企业海外拓展的重要战略选择。这一模式不仅为中国的中小型企业提供了进军全球市场的机会,更为它们在全球舞台上展示独特的竞争优势提供了强有力的支撑。武汉星起航将从市场拓宽、…

江协科技51单片机学习- p19 串口通信

前言: 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用: 51单片机入门教程-2…

Java Stream API揭秘:掌握List流操作,打造高效数据处理流程

序言 Java Stream API是Java 8中引入的一个非常重要的功能组成部分,它提供了一种声明式的处理数据集合的方法。它主要特点是基于函数式编程的理念,允许我们以更加简洁、高效的方式进行集合的处理、转换和过滤。通过Stream API,我们可以灵活地…

【LangChain系列——案例分析】【基于SQL+CSV的案例分析】【持续更新中】

目录 前言一、LangChain介绍二、在SQL问答时如何更好的提示?2-1、安装2-2、SQLite 样例数据2-3、使用langchain与其进行交互2-4、查看模型提示语2-5、提供表定义和示例行2-6、将表信息插入到Prompt中去2-7、添加自然语言->SQL示例2-8、在向量数据库中查找最相关的…

JAVA开发的一套医院绩效考核系统源码:KPI关键绩效指标的清晰归纳

KPI是关键绩效指标(Key Performance Indicators)的缩写,它是一种用于衡量员工或组织绩效的量化指标。这些指标通常与组织的目标和战略相关,并帮助管理层评估员工和组织的实际表现。KPI还可以为员工提供清晰的方向,使他…

办公软件汇总

1、OCR 1.1 pearOCR pearOCR 是一个免费的免费在线文字提取OCR工具网站。PearOCR界面简洁,所有过程均在网页端完成,无需下载任何软件,点开即用。官方地址:https://pearocr.com/ 参考:9款文字识别(OCR)工具…

Android性能分析工具-Perfetto基本使用

文章目录 一、Perfetto介绍二、抓取方法2.1 手机端直接抓取2.1.1 打开系统跟踪2.1.2 开始录制 2.2 使用 adb 抓取2.3 通过 Perfetto 网页自定义抓取 三、trace分析方法3.1 打开trace文件3.2 查看方法 一、Perfetto介绍 Perfetto 是一个用于性能检测和跟踪分析的生产级开源堆栈。…

Call_once

call_once和once_flag的声明 struct once_flag {constexpr once_flag() noexcept;once_flag(const once_flag&) delete;once_flag& operator(const once_flag&) delete; }; template<class Callable, class ...Args>void call_once(once_flag& flag, …

程序员如何用ChatGPT解决常见编程问题:实例解析

引言 在现代编程的世界中&#xff0c;技术进步日新月异&#xff0c;程序员们面临着各种各样的挑战和问题。解决这些问题的过程中&#xff0c;找到合适的工具至关重要。ChatGPT作为一种先进的人工智能语言模型&#xff0c;能够帮助程序员迅速、高效地解决常见的编程问题。本文将…

windows10/win11截图快捷键 和 剪贴板历史记录 快捷键

后知后觉的我今天又学了两招&#xff1a; windows10/win11截图快捷键 按 Windows 徽标键‌ Shift S。 选择屏幕截图的区域时&#xff0c;桌面将变暗。 默认情况下&#xff0c;选择“矩形模式”。 可以通过在工具栏中选择以下选项之一来更改截图的形状&#xff1a;“矩形模式”…

深度神经网络(dnn)--风格迁移(简单易懂)

概括 深度神经网络&#xff08;DNN&#xff09;在风格迁移领域的应用&#xff0c;实现了将一幅图像的艺术风格迁移到另一幅图像上的目标。该技术基于深度学习模型&#xff0c;特别是卷积神经网络&#xff08;CNN&#xff09;&#xff0c;通过提取内容图像的内容特征和风格图像的…

Python+Pytest+Yaml+Request+Allure+GitLab+Jenkins接口自动化测试框架概解

PythonPytestYamlAllure整体框架目录&#xff08;源代码请等下篇&#xff09; 框架详解 common:公共方法包 –get_path.py:获取文件路径方法 –logger_util.py:输出日志方法 –parameters_until.py&#xff1a;传参方式方法封装 –requests_util.py&#xff1a;请求方式方法封…

星坤Type-A连接器:创新快充技术,引领电子连接!

快速发展的电子时代&#xff0c;消费者对电子设备的性能和便利性有着更高的要求。特别是在充电和数据传输方面&#xff0c;快充技术和高速传输已成为市场的新宠。中国星坤公司推出的Type-A连接器系列&#xff0c;以其卓越的性能和创新的设计&#xff0c;满足了市场对高效、稳定…

天润融通:AI赋能客户体验,推动企业收入和业绩增长

“客户体验已经成为全球企业差异化的关键。人工智能与数据分析等创新技术正在加速推动企业在客户体验计划中取得成功&#xff0c;以保持领先地位”。Customer Insights & Analysis 研究经理Craig Simpson说道。 客户体验 (CX&#xff0c;Customer Experience) 是客户在与企…

charles抓包

1、去官网下载最新版本&#xff0c;避免出现不必要的问题 2、mac 上charles 的菜单栏在最顶上 3、mac 上安装根证书不受信任 双击下不受信任的正证书&#xff0c;点开信任小文字&#xff0c;然后把下面的这些全部设置为始终信任 4、手机上安装证书 先把wifi代理设置好 如果安…