【办公类-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 测试访问公网固定二级子域名 前言 网:我们通常说的是互…

solved: Could not load the Qt platform plugin “xcb“

传送门 1 export QT_QPA_PLATFORMoffscreen 或者 import os os.environ.pop("QT_QPA_PLATFORM_PLUGIN_PATH")2 pip uninstall opencv-python pip install opencv-python-headless

spark的数据扩展

会导致数据扩展的操作; 如何避免数据扩展; 一 countDistinct操作 1. 扩展原因 Spark的count distinct操作可能会导致数据扩展的原因是,它需要在执行操作之前对所有不同的值 进行分组。这意味着Spark需要将所有数据加载到内存中,并将其按照不同的值进行…

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

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

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

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

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

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

pymysql执行insert插入操作

视频版教程 Python操作Mysql数据库之pymysql模块技术 执行修改操作,需要通过Connection对象调用commit()方法确认提交,或者 构造方法里面,autocommit设置True,自动提交 from pymysql import Connectioncon Nonetry:# 创建数据库…

C++中的静态库与动态库

文章目录 静态库构建静态库 动态库构建动态库 它们的不同参考文章 单独提这个 库,我想我们在coding过程中,可能也会知道一两个词,如 标准库、xx库等。库作为一组已编写好、组织好的、可复用的资源接口,可以被用于其他程序。很不…

Office Xml 2003转XLSX

一、使用到的依赖包 1、xelem-3.1.jar 下载地址:管网下载地址 2、poi-3.17.jar 下载地址:https://mvnrepository.com/artifact/org.apache.poi/poi 二、实现方法 1、Xml2003公式转XLSX公式算法 (1)Xml2003函数格式 SUM(R[-1…

Linux安装mysql数据库并实现主从搭建

一.环境说明 【环境说明】: 192.168.110.161 mysql-master ##网络配置到位,防火墙关闭,selinux关闭 192.168.110.162 mysql-slave ##网络配置到位,防火墙关闭,selinux关闭 两台主机,操作系统是centos7…

【Python入门教程】Python实现猜数字小游戏

今天跟大家分享一下很久之前自己做的一款猜数字小游戏,基本的循环判断语句即可实现,可以用来当练手或者消磨时间用。 大家在编代码的时候最重要就是先理清逻辑思路,例如应该套几层循环、分几个模块等等。然后在编码时可以先随意一点&#xff…

影响独立服务器稳定运行的因素

影响独立服务器稳定运行的因素 独立服务器的稳定对于网站和运行的程序来说都是最重要的因素,不只是简单的影响网站的速度,也影响搜索引擎对网站的优化。试想一下,客户在访问网站时,网页长时间打不开,页面崩溃会导致客户…

opencv图像像素类型转换与归一化

文章目录 opencv图像像素类型转换与归一化1、为什么对图像像素类型转换与归一化2、在OpenCV中,convertTo() 和 normalize() 是两个常用的图像处理函数,用于图像像素类型转换和归一化;(1)convertTo() 函数用于将一个 cv…

算法 三数之和-(双指针)

牛客网: BM54 题目: 数组中所有不重复的满足三数之和等于0的数,非递减形式。 思路: 数组不小于3。不重复非递减,需先排序。使用idx从0开始遍历到n-2, 如果出现num[idx]num[idx-1]的情况,忽略继续下一个idx;令left idx1, right …

现代卷积网络实战系列2:PyTorch构建训练函数、LeNet网络

🌈🌈🌈现代卷积网络实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 1、MNIST数据集处理、加载、网络初始化、测试函数 2、训练函数、PyTorch构建LeNet网络 3、PyTorch从零构建AlexNet训练MNIST数据…

ndoe.js、npm相关笔记

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

npm 命令

目录 初始化 搜索 安装 删除 更新 换源 查看 其他 补充 1.初始化 npm init #初始化一个package.json文件 npm init -y | npm init --yes 2.搜索 npm s jquery | npm search jquery 3.安装 npm install npm -g #更新到最新版本 npm i uniq | npm ins…

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)。关系一词与数学领域有关,它是集合基…