【办公类-16-06】20230901大班运动场地分配表-斜线排列、5天循环、不跳节日,手动修改节日”(python 排班表系列)

背景需求:

大班组长发来一个“运动排班”的需求表:“就是和去年一样的每个班的运动排班,就因为今年大班变成7个班,删掉一个场地,就要重新做一份,不然我就用去年的那份了(8个大班排班)”

(拆了中8班,孩子被分流到其他7个大班)

于是我拿出2023年2月的那份运动py,复制了一份新的2023年9月

参数修改

1、修改运动场地列表

对比发现

(1)删除了勇敢者道路

(2)最后的”爬龙接力赛”放到第一的位置,

排序方式——没有考虑跳过节日,全部按照一周五天排列

2、代码展示:(稍微修改一下,搞了一个零时文件夹放7个班级EXCLE,最后只保留一个合并EXCEL)


'''
目的:2023年9月大班总部分散运动场地(各班滚动排)
作者:阿夏
时间:2023年9月6日15:30
'''import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook
import time
import os,shutilprint('---------运动场地的循环------')
print('---------规则:------')
print('---------1.有7个运动场地,01 02 03 04 05 06 07 :------')
print('---------2.大1班从01开始游戏,01 02 03 04 05 06 07 :------')
print('---------3.大2班从02开始游戏,02 03 04 05 06 07 ,01 ------')
print('---------4.大3班从03开始游戏,03 04 05 06 07 ,01 02 ------')
print('---------依次类推,最后制作出所有大班的每周的运动排序表 ------')
print('---------通常是每周5天,需要跳过节假日 ------')
time.sleep(2)print('---------第1步:把8个运动场地循环21次(105元素组成的列表)------')# 本学期:大1,大2,大3,大4,大5,大7,大8,大9班,其中6班空缺,一共有8个大班
gradenum=['1','2','3','4','5','6','7']# 新建一个”装N份word和PDF“的文件夹
lswj=r"C:\Users\jg2yXRZ\OneDrive\桌面\word2pdf2png\零时文件夹"
if os.path.exists(lswj):print("目录已存在")
else:print("目录不存在,创建成功")os.mkdir(lswj)# print(len(gradenum))# 8# radenum的长度=7,0-7,一共循环8次
for num in range(0,len(gradenum)):L=[]# 这里的L等于list,因为和最后excle合并程序中的代码有冲突,所以全部改成大写的首字母L1=[]L3=[]  L2=[]# 这里是8个运动场地,因为后面有递进,所以把最后一个 ,放到01前面,这样摆放后面才会正确)L3=['爬笼接力赛\n(爬笼、树屋、沙漏、书包、铃铛)','小小交通车\n(平衡车、三轮车、扭扭车、自行车、木桥)','平衡小勇士\n(长短竹梯、三脚架、长凳、轮胎、安全垫)','百变小能手\n(小足球、箩筐、百变迷宫架、垫子、马甲)','山洞大探险\n(轮胎、安全垫、麻绳)','对战投投乐\n(弹力棉球、吸盘球、飞镖盘)','跑跳小达人\n(轮胎、跨栏、锣鼓、接力棒)',]
# '勇敢者道路\n(背篓、布袋、矿泉水瓶)',# 生成8个班级8组运动(第1个元素不同)for i in range(0,len(gradenum)):        # b = L3.pop(0)    # 在运动场地列表L3中 删除 第1个元素 大1班 先删除,就是从01开始L3.append(b)  # 在运动场地列表L3最后 添加 第1个元素# print(L[0])L1.append(L3[0:len(gradenum)])     # 把不断变化的内容添加到L1 # 8个班级场地“基本元素“构成了L1列表:[['01', '02', '03', '04', '05', '06', '07', ''], ['02', '03', '04', '05', '06', '07', '', '01'], ['03', '04', '05', '06', '07', '', '01', '02'], ['04', '05', '06', '07', '', '01', '02', '03'], ['05', '06',  # print(L1)for b in range(23):        # 把各班“场地基本元素8个”循环21次,数量多一点,便于后期提取内容for y in L1[num]:    #抽取L1中的一组组内容  L1[0]=['01', '02', '03', '04', '05', '06', '07', '']、L1[1]=['02', '03', '04', '05', '06', '07', '', '01'],# print(y)               # 在用 y提取L1[0]中的'01', '02', '03', '04', '05', '06', '07', ''三个元素L.append(y)     #把y提取的单个元素一个个加到列表里,并且依次循环22次,数量足够多print(L)# 打印出来大1班 列表组=['01', '02', '03', '04', '05', '06', '07', '','01', '02', '03', '04', '05', '06', '07', '','01', '02', '03', '04', '05', '06', '07', '','01', '02', '03', '04', '05', '06', '07', '','01', '02', '03', '04', '05', '06', '07', '']print('---------第2步:如果一周有5天(不考虑跳过假日)------')
#   print('大{}班'.format(gradenum[num]))for i in range(1):#共20周这是第1周,是原始的位置81234a=L[0:5]# 列表有8个运动项目,但只要其中5个(周一到周五)for x1 in a:L2.append(x1)for i in range(2,22):  #共20周    这是第2-20周  ,如果是21周,把2,21 改成2,22 L=L[5:]  #  5代表前面一个数已经取过5位L.append(L) # 将a安排到最后一个座位b=L[0:5] # 列表是八个循环,我只要其中5个for x2 in b:L2.append(x2)  # print('大{}班'.format(gradenum[num]))# print('---------第3步:如果每周需要跳过假日(考虑跳过假日)------')# #  每周需要的天数 (跳过节日.如第1周只有2天工作,9月1-2日(周四周五) ,第3周周一是中秋节放假1天,所以只有4个工作日)# # day=['3','5','5','6','5','2','5','5','5','5','5','5','5','5','5','5','5','4','5','5','2']# kong=''# tt1='清明节'# tt2='劳动节'# tt3='端午节'# # 第1周 第2-7周开始 第8周部分# # for d in range(0,1):       # L2.append(kong) # L2.append(kong) # for kk in L[0:int(3+5*6+2)]:#     L2.append(kk) # # 清明# L2.append(tt1) #  # 清明后到五一前 # for kk in L[int(3+5*6+2):int((3+5*6+2)+(2+5*2))]:#     L2.append(kk)    # # 23日(周日)也上班 所以一共6天 一周排5填,28号周五放到下周周一算# for kk in L[int((3+5*6+2)+(2+5*2)):int((3+5*6+2)+(2+5*2)+6)]:#     L2.append(kk)      # # 劳动节休息休息3天,实际1天空格 (28日放到周一了 周二五一节) # L2.append(tt2)    # # 劳动节456三天上班+6周5填天 1周3天(劳动节后到端午节前)# for kk in L[int((3+5*6+2)+(2+5*2+6)):int((3+5*6+2)+(2+5*2+6)+3+(5*6+3))]:#     L2.append(kk)    # # 端午节三天,占一个格子在周四 周日要上班顶替周五# L2.append(tt3) # for kk in L[int((3+5*6+2)+(2+5*2+6)+3+(5*6+3)):int((3+5*6+2)+(2+5*2+6)+3+(5*6+3))+6]:#     L2.append(kk)    print(L2) print('---------第4步:xls写入)------') workbook = xlwt.Workbook()# 新建xls工作簿sheet = workbook.add_sheet("Sheet")# 新建xls工作簿的工作表的名字是sheet # 第0列 写入“第1周、第2周、第3周……第21周dates=[]for i in range(1,22):n="第{}周".format(i)    # 用遍历方法获得“第1周、第2周、第21周”字样,dates.append(n)          # 添加到列表    print(dates)        # print(date)row=1for d in range(0, len(dates)):sheet.write(row, 0, dates[d])         # 这里enumerate不能用,因为只有一列,所以就用row += 1    # 第0行 写入 星期一  '星期二','星期三','星期四','星期五  #weeks = ['周次','星期一','星期二','星期三','星期四','星期五']week = len(weeks) col=0for d in range(0, len(weeks)):sheet.write(0,col,weeks[d])         # 因为只有一行,所以就用有两种写法(enumerate和这种)col+= 1  # 输入星期的另一种写法# col=0 # for row,item in enumerate(weeks,0):            # 可以这样写L2[i]=表格内的内容=item,索引数字=col 0代表在A1 1代表在B1#     sheet.write(col,row,item)           # 第1行第1列开始写入一行”星期X"# col+=1# 第B2开始写入 运动内容print('-----------第3步,保存到excle--------')# 以下是xls保存#  在list_date五个五个取值   list3=[]for k in range(0,21):list3.append(L2[k*5:k*5+5])       print(list3)# print(list)for opq in list3:print(opq)# arrlan2 = len(list_d)# 日期抽取5天一组arrlan = len(list3)# L2['07', '', '01', '02', '03']的长度 21组row = 1     # 第2行for i in range(arrlan):         # 遍历21组[]的总数for col,item in enumerate(list3[i],1):            # L2[i]=表格内的内容=item,索引数字=colsheet.write(row,col,item)  # row,col,item 行=1、列=索引数字、内容=表格内容 写入第一行第一列row += 1   print('---------第5步:xls保存N份工作簿(每份一页)------')             try:workbook.save(lswj+'\\20230901大{}班分散运动.xls'.format(gradenum[num]))    # 新建保存 只能xlsprint('计划生成成功')except e:print('失败...')print(e)print('---------第6步:把N份xls单页内容合并在1个工作簿的N个工作表内)------')      
time.sleep(2)# 获取目录下所有的表
import os
import pandas as pd# dir = r'C:\Users\jg2yXRZ\OneDrive\桌面\word2pdf2png'
# 获取目录下所有的表
origin_file_list = os.listdir(lswj)
print(origin_file_list)with pd.ExcelWriter(r"C:\Users\jg2yXRZ\OneDrive\桌面\word2pdf2png\20230901大班分散运动( 不跳过节日).xls") as writer:# 循环遍历表格for i in origin_file_list:# 拼接每个文件的路径file_path = lswj + '\\' + i# 把表名赋予给对应的sheetsheet_name = i[:-4]df = pd.read_excel(file_path)# 变相解决表格中第一行第一列为空的缺陷ring = "".join(list(str(i) for i in df.index))# string = .join(list(str(i) for i in df.index))# 判断如果索引都为数字,则不保留索引(根据自己代码调整)if ring.isdigit():df.to_excel(writer, sheet_name,index=False)else:df.to_excel(writer, sheet_name)# 新建一个”装N份word和PDF“的文件夹if os.path.exists(lswj):shutil.rmtree(lswj)print("目录已存在")
else:print("目录不存在,创建成功")

结果展示:

最后零时文件夹自动被删除了。只保留一个合并XLSX

三、手动调整表格(补充节假日)

原始表格展示:

1、有七个班级的工作表(每个表文字都挤在一起)

2、每个班级都是五天(塞满,不考虑节假日)

(一)选中所有班级标签

没选中时时灰色底纹状态

(二)选择列,拉宽

(三)自动换行 居中

四、手动删除内容,添加更改节日

所有的班级的19周第一天都改成了元旦(全选标签,白色底纹状态下,才能批量修改)))

同样的方法删除“第一周的前面几天”

同样的方法修改“国庆节”(全选标签,删除文字,添加文字)

完工了,发给大班组长

给大班组长的相关解释:

1、国庆节的补班(周六周日)

2、验证排序正确性(以大1班为例,第1周是“小小交通车“开始,但”前面的4天删除了。图示说明正确性(保证各班每天出去分散运动,不会场地重复)

3、每班一份五天,便于教师做周计划(贴文字,不需要日期)、也便于教师每天运动前看看班级张贴的运动表单,了解活动场地,(班级贴的运动表单最好有日期,但这又要按7天补日期和星期,写起来有点费力)

目前这样已经够用了。

继续测试更多的便利的工作表单吧!

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

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

相关文章

【内网穿透】在Ubuntu搭建Web小游戏网站,并将其发布到公网访问

目录 前言 1. 本地环境服务搭建 2. 局域网测试访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4. 配置固定二级子域名 4.1 保留一个二级子域名 4.2 配置二级子域名 4.3 测试访问公网固定二级子域名 前言 网:我们通常说的是互…

notepad++配合正则表达式分组模式处理文本转化为sql语句

一、正则分组知识点补充 正则分组和捕获 ():用于分组和捕获子表达式。 大白话就是()匹配到的数据,通过美元符号加下标可以获取该数据,例如$1、$2, 下标从1开始。 下面的案例就采用该模式处理文本数据 二、使用正则的需求背景 有一份报表…

小米云原生文件存储平台化实践:支撑 AI 训练、大模型、容器平台多项业务

小米作为全球知名的科技巨头公司,已经在数百款产品中广泛应用了 AI 技术,这些产品包括手机、电视、智能音箱、儿童手表和翻译机等。这些 AI 应用主要都是通过小米的深度学习训练平台完成的。 在训练平台的存储方案中,小米曾尝试了多种不同的…

网络安全CTF比赛有哪些事?——《CTF那些事儿》告诉你

目录 前言 一、内容简介 二、读者对象 三、专家推荐 四、全书目录 前言 CTF比赛是快速提升网络安全实战技能的重要途径,已成为各个行业选拔网络安全人才的通用方法。但是,本书作者在从事CTF培训的过程中,发现存在几个突出的问题&#xff1…

ndoe.js、npm相关笔记

1、npm 全局安装 npm config get prefix 获取 npm 全局安装路径如果全局插件不能正常使用,看环境变量是否已经配置。没有配置则把全局安装路径配置到环境变量的path中

MS933NA适用于 1MP/60fps 摄像头、37.5MHz100MHz、10 位/12 位的串化器

MS933NA 是 10 位 /12 位串化器,支持 37.5MHz  100MHz 时钟, MS933NA 广泛应用于车载摄像、医疗设备、管道探测等领域。 主要特点 ◼ 支持输入 37.5MHz 到 100MHz 的图像时钟 ◼ 单个差分对互连 ◼ 可编程数据有效负载 10 位 /12 …

django 实现:闭包表—树状结构

闭包表—树状结构数据的数据库表设计 闭包表模型 闭包表(Closure Table)是一种通过空间换时间的模型,它是用一个专门的关系表(其实这也是我们推荐的归一化方式)来记录树上节点之间的层级关系以及距离。 场景 我们 …

什么是关系模型? 关系模型的基本概念

关系模型由IBM公司研究员Edgar Frank Codd于1970年发表的论文中提出,经过多年的发展,已经成为目前最常用、最重要的模型之一。 在关系模型中有一些基本的概念,具体如下。 (1)关系(Relation)。关系一词与数学领域有关,它是集合基…

Xcode14.3.1打包报错Command PhaseScriptExecution failed with a nonzero exit code

真机运行编译正常,一打包就报错 rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/d9889869-120b-11ee-b796-7a03568b17ac/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender2.6.9] Command PhaseScrip…

优化类问题概述

数学建模系列文章: 以下是个人在准备数模国赛时候的一些模型算法和代码整理,有空会不断更新内容: 评价模型(一)层次分析法(AHP),熵权法,TOPSIS分析 及其对应 PYTHON 实现代码和例题…

数据通信——应用层(域名系统)

引言 TCP到此就告一段落,这也意味着传输层结束了,紧随其后的就是TCP/IP五层架构的应用层。操作系统、编程语言、用户的可视化界面等等都要通过应用层来体现。应用层和我们息息相关,我们使用电子设备娱乐或办公时,接触到的就是应用…

【刷题笔记9.24】LeetCode:二叉树最大深度

LeetCode:二叉树最大深度 1、题目描述: 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 二、思路与算法 如果我们知道了左子树和右子树的最大深度 lll 和 rrr,…

力扣:109. 有序链表转换二叉搜索树(Python3)

题目: 给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差不超过 1。 来源:力扣(LeetCod…

uni-app使用HBuilder X编辑器本地打包apk步骤说明

1.下载安装Android Studio 下载地址官方地址:Android Studio 下载文件归档 | Android 开发者 | Android Developers 安装Android SDK和Google USB Driver即可,后者主要是为了后期使用USB设置的,如果不需要可以不点。 2.下载uni-app提供…

ICMP差错包

ICMP报文分类 Type Code 描述 查询/差错 0-Echo响应 0 Echo响应报文 查询 3-目的不可达 0 目标网络不可达报文 差错 1 目标主机不可达报文 差错 2 目标协议不可达报文 差错 3 目标端口不可达报文 差错 4 要求分段并设置DF flag标志报文 差错 5 源路由…

Mac磁盘空间满了怎么办?Mac如何清理磁盘空间

你是不是发现你的Mac电脑存储越来越满,甚至操作系统本身就占了100多G的空间?这不仅影响了电脑的性能,而且也让你无法存储更多的重要文件和软件。别担心,今天这篇文章将告诉你如何清除多余的文件,让你的Mac重获新生。 一…

gateway之过滤器(Filter)详解

文章目录 什么是过滤器过滤器的种类局部过滤器代码示例全局过滤器代码示例 总结 什么是过滤器 在Spring Cloud中,过滤器(Filter)是一种关键的组件,用于在微服务架构中处理和转换传入请求以及传出响应。过滤器位于服务网关或代理中…

【力扣-每日一题】213. 打家劫舍 II

class Solution { public:int getMax(int n,vector<int> &nums){int a0,bnums[n],c0;for(int in1;i<nums.size()n-1;i){ //sizen-1,为0时&#xff0c;第一个可以偷&#xff0c;最后一个不能偷size-1&#xff1b;n为1时&#xff0c;最后一个可偷&#xff0c;计算…

Spring学习(七)——AOP

1. AOP 1.1 什么是 AOP AOP&#xff08;Aspect Oriented Programming&#xff09;意为&#xff1a;面向切面编程&#xff0c;通过预编译方式和运行期动态代理实现程序功能的统一维护技术。AOP 是 OOP 的延续&#xff0c;是软件开发的一个热点&#xff0c;也是 Spring 框架的一…

数据包络分析——SBM模型

写在前面&#xff1a; 博主本人大学期间参加数学建模竞赛十多余次&#xff0c;获奖等级均在二等奖以上。为了让更多学生在数学建模这条路上少走弯路&#xff0c;故将数学建模常用数学模型算法汇聚于此专栏&#xff0c;希望能够对要参加数学建模比赛的同学们有所帮助。 目录 1. …