【办公类-16-07-02】“2023下学期 周计划-户外游戏 每班1周五天相同场地,6周一次循环”(python 排班表系列)

news2024/11/22 7:01:44

背景需求:

又到了开学季,新的自主游戏(户外游戏)安排表出炉了。

这张是贴在美术活动室的安排表,我需要转换成班级为单位的安排表,便于批量制作周计划。

设计思路:

1、一个班级每周轮到的一个场地,并连续5天(周一到周五):

如中2班第1周轮到美术游戏,就是第1周周一、周二、周三、周四、周五都是玩美术游戏,也就是说每个班级每周去一个场地,并玩5天,(以前的游戏都是每个班级每周轮流5个场地,因此这份代码与过去的代码有较大调整)

2、总部中班有6个班级,并有6种不同的户外游戏场地

从中2班开始,每个班级每周轮到一个不同的游戏场地(1个场地玩5天),第二周从中3班开始,每个班级每周轮到一个不同的游戏场地(1个场地玩5天)……

3、周次是每6周循环,19周就是3次循环+1周

周次显示,第1-6周内每个班级按照斜线轮换的方式进行场地滚动,6个班级6个场地循环36次后,又恢复到中2班为始的状态。

我使用原来的大班游戏活动安排表,发现并不能直接使用,

【办公类-16-05-03】“2022下学期 大班游戏活动室排班表——班主任版20周”(python 排班表系列)_游戏排班-CSDN博客文章浏览阅读90次。【办公类-16-05-03】“2022下学期 大班游戏活动室排班表——班主任版20周”(python 排班表系列)_游戏排班https://blog.csdn.net/reasonsummer/article/details/129094382

通过修改原来的代码,我花了一天做出了想要的结果。

代码展示:


#20230217 


'''
2023学年下学期中班户外游戏安排(6个班级 每周玩一个场地5天,第二周轮换 不跳节日)
作者:阿夏
时间:2024年2月19日
'''

# import sys
# sys.path.append('/path/to/openpyxl')

import sys
import random
import xlrd
import xlwt
from openpyxl import load_workbook

import time

time.sleep(2)

# '''班主任贴周计划用的(按班级分类)'''
weekweek=19
# int(input('共有几周?(如19周 20)\n'))


print('---------第1步:制作每个班级的游戏的总表------')

# 本学期:大1,大2,大3,大4,大5,大7,大8,大9班,其中6班空缺,一共有8个大班
gradenum=[]
for g in range(2,8):
    gradenum.append('中{}班'.format(g))
print(gradenum)
gradenum.insert(0, gradenum.pop())
# ['2','3','4','5','6','7']
print(len(gradenum))# 8


L=[]# 班级
L1=[]
L3=[]  
L2=[]
L4=[]
# 这里是8个活动室游戏活动室,因为后面有递进,所以把最后一个 08,放到01前面,这样摆放后面才会正确)
# L3=['美术游戏','角色游戏','建构游戏','表演游戏','沙水游戏','角色游戏']原始
L3=gradenum

# 生成8个班级8组活动室(第1个元素不同)
for i in range(0,len(gradenum)):        # 
    b = L3.pop(0)    # 在活动室游戏活动室列表L3中 删除 第1个元素 大1班 先删除08,就是从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', '08'], ['02', '03', '04', '05', '06', '07', '08', '01'], ['03', '04', '05', '06', '07', '08', '01', '02'], ['04', '05', '06', '07', '08', '01', '02', '03'], ['05', '06',  
# print(L1)
    
# 每周6个班级,基础模板6次 L=班级
for b in range(4):        # 把各班“游戏活动室基本元素8个”循环21次,数量多一点,便于后期提取内容
    for y in L1:
        for z in y:    #抽取L1中的一组组内容  L1[0]=['01', '02', '03', '04', '05', '06', '07', '08']、L1[1]=['02', '03', '04', '05', '06', '07', '08', '01'],
                        # 在用 y提取L1[0]中的'01', '02', '03', '04', '05', '06', '07', '08'三个元素
            L.append(z)     #把y提取的单个元素一个个加到列表里,并且依次循环22次,数量足够多
# print(L)
# 144
# print(len(L))
#    ['中2班', '中3班', '中4班', '中5班', '中6班', '中7班', '中3班', '中4班', '中5班', '中6班', '中7班', '中2班', '中4班', '中5班', '中6班', '中7班', '中2班', '中3班', '中5班', '中6班', '中7班', '中2班', '中3班', '中4班', '中6班', '中7班', '中2班', '中3班', '中4班', '中5班', '中7班', '中2班', '中3班', '中4班', '中5班', '中6班', '中2班', '中3班', '中4班', '中5班', '中6班', '中7班', '中3班', '中4班', '中
# 5班', '中6班', '中7班', '中2班', '中4班', '中5班', '中6班', '中7班', '中2班', '中3班', '中5班', '中6班', '中7班', '中2班', '中3班', '中4班', '中6班', '中7班', '中2班', '中3班', '中4班', '中5班', '中7 
# 班', '中2班', '中3班', '中4班', '中5班', '中6班', '中2班', '中3班', '中4班', '中5班', '中6班', '中7班', '中3班', '中4班', '中5班', '中6班', '中7班', '中2班', '中4班', '中5班', '中6班', '中7班', '中2班
# ', '中3班', '中5班', '中6班', '中7班', '中2班', '中3班', '中4班', '中6班', '中7班', '中2班', '中3班', '中4班', '中5班', '中7班', '中2班', '中3班', '中4班', '中5班', '中6班', '中2班', '中3班', '中4班', '中5班', '中6班', '中7班', '中3班', '中4班', '中5班', '中6班', '中7班', '中2班', '中4班', '中5班', '中6班', '中7班', '中2班', '中3班', '中5班', '中6班', '中7班', '中2班', '中3班', '中4班', '中6班', '中7班', '中2班', '中3班', '中4班', '中5班', '中7班', '中2班', '中3班', '中4班', '中5班', '中6班']


# 10
    
print('---------第2步:六类游戏乘以19周------')  
L4=['美术游戏','角色游戏','建构游戏','表演游戏','沙水游戏','角色游戏']
L5=[]
for v in range(weekweek):        # 19周a        
    for w in L4:
        for l in range(5):# 美术游戏中1班一周玩5次,角色
            L5.append(w)
# print(L5)
# print(len(L5))
# # 570/5=114
            
#     print('---------第2步:如果一周有5天(不考虑跳过假日)------')

#     print('{}'.format(gradenum[num]))
    # 限制19周的     
for i in range(0,int(len(L5)/5)):#第1周
    L2.append(L5[i*5:i*5+5])
# print(L2)
# print(len(L2))
# 114
# L2=角色游戏等6类游戏的嵌套列表




# # #     # print('---------第3步:如果每周需要跳过假日(考虑跳过假日)------')

# # #     # #  每周需要的天数 (跳过节日.如第1周只有2天工作,9月1-2日(周四周五) ,第3周周一是中秋节放假1天,所以只有4个工作日)
# # #     # day=['2','5','4','5','5','2','5','5','5','5','5','5','5','5','5','5','5','4','5','5','2']

# # #     # print('中{}班'.format(gradenum[num]))
# # #     # # 第1周
# # #     # for d in range(0,1):          # d=索引数字
# # #     #     print(L[0:int(day[0])]) # 列表有8个活动室项目,但只要其中5个(周一到周五)
# # #     #     L2.append(L[0:int(day[0])]) 
# # #     # # 第2周开始
# # #     # for d in range(1,len(day)):        # 0-21
# # #     #     # print(d+1)
# # #     #     L=L[int(day[d-1]):]  # day[0]=2,
# # #     #     L.append(L) # 将a安排到最后一个座位
# # #     #     print(L[0:int(day[d])])# 列表是八个循环,我只要其中5个
# # #     #     L2.append(L[0:int(day[d])])

# # #     # 以下是跳过假日的最初的写法,太长了,研究上面的是2022.9.9-2023.1.17 共21周的假日安排


print('---------第4-1步:xls写入)------') 
workbook = xlwt.Workbook()# 新建xls工作簿
sheet = workbook.add_sheet("Sheet")# 新建xls工作簿的工作表的名字是sheet 

print('---------第4-2步:第1行 写入 星期一等)------')    
weeks = ['班级','周次','星期一','星期二','星期三','星期四','星期五',]
# weeks=['周次','美术游戏','角色游戏','建构游戏','表演游戏','沙水游戏','角色游戏']
week = len(weeks) 

col=0
for d in range(0, len(weeks)):
    sheet.write(0,col,weeks[d])         # 因为只有一行,所以就用有两种写法(enumerate和这种)
    col+= 1 



print('---------第4-3步:第2列写入周次)------')    # 第0列 写入“第1周、第2周、第3周……第21周
dates=[]
# 制作第一列的所有文字
for i in range(1,int(weekweek+1)):
    for r in range(len(L4)):
        n="第{}周".format('%02d'%i)    # 用遍历方法获得“第1周、第2周、第21周”字样,
        dates.append(n)          # 添加到列表    s
print(dates)  
print(len(dates))  
#114 

# 写入周次
row=1
for d in range(0, len(dates)):
    sheet.write(row, 1, dates[d])         # 这里enumerate不能用,因为只有一列,所以就用
    row += 1    

print('---------第4-3步:第1列写入班级)------') 
# 写入班级列 L=班级列
row=1
for h in range(0, len(L[:len(dates)])):        # 只要班级列表的前114个        
    sheet.write(row,0,L[h])         # 因为只有一行,所以就用有两种写法(enumerate和这种)
    row += 1      


print('---------第4-5步:第3-9列写入游戏内容一周五次相同)------') 


row=1    
#  写入游戏内容列 L2=游戏内容一周五个
for i in range((len(L2))):         # 遍历21组[]的总数
    for col,item in enumerate(L2[i],2):            # L2[i]=表格内的内容=item,索引数字=col
        sheet.write(row,col,item)  # row,col,item 行=1、列=索引数字、内容=表格内容 写入第一行第一列
    row += 1 
#
        

print('---------第5步:xls保存N份工作簿(每份一页)------')             
try:
    workbook.save(r"C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240218 下学期中班户外游戏一周五天相同(班主任用).xls")    # 新建保存 只能xls
    print('计划生成成功')
except e:
    print('失败...')
    print(e)

# print('---------第6步:把1份xls按照班级,分类成N个不同的工作表内(班主任贴周计划用)------')      
# https://blog.csdn.net/xo3ylAF9kGs/article/details/135856653

# 切割成同表
import pandas as pd
import os
 
df = pd.read_excel(r'C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240218 下学期中班户外游戏一周五天相同(班主任用).xls')
 
writer = pd.ExcelWriter(r'C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240218 下学期中班户外游戏一周五天相同(班主任用).xls')
df.to_excel(writer, sheet_name='Sheet', index=False)
 
for j in df['班级'].unique():
    df[df['班级'] == j].to_excel(writer, sheet_name=j+'户外游戏', index=False)
 
writer.save()

运行结果

分表:

1、6周一次循环

2、便于班主任了解本周户外游戏场地+便于制作周计划

3、能够验证正确性

重点说明:

我一直很困扰:如何让一张EXCEL总表按照“班级”拆分成多个表格(在一个EXCEL内),

以下是解决方案,包含拆分多个工作簿(不在一个EXCEL内)和拆分多个工作表(在一个EXCEL内),非常实用 ,强烈推荐

Python实现Excel拆分与合并-CSDN博客文章浏览阅读23次。在实际工作中,我们经常会遇到各种表格的拆分与合并的情况。如果只是少量表,手动操作还算可行,但是如果是几十上百张表,最好使用Python编程进行自动化处理。下面介绍两种拆分案例场景,如何用Pandas实现Excel文件的拆分。按条件将Excel文件拆分到不同的工作簿假设现在有一个汇总表,内部存储了整个年级的成绩数据。现在需要按照班级分类,将不同班级的数据拆分到不同的工作簿中,最终实现"三年级总成绩...https://blog.csdn.net/xo3ylAF9kGs/article/details/135856653

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

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

相关文章

网工内推 | 上市公司、外企网工,厂商认证优先,最高18K*13薪

01 北京电旗通讯技术股份有限公司 招聘岗位:网络运维工程师 职责描述: 1.负责内部核心网络的运行监控、故障处理。 2.对网络性能进行监控和调优。 3.负责网络设备的规划选型。 4.设计网络架构拓扑图,制定网络规范。 5.分析处理复杂网络故障。 6.负…

sizeof()的易错点

你也可以传入一个变量的名字(而不只是类型)给 sizeof(),但在一些情况下,可能得不到你要的结果,所以要小心使用。例如,看看下面的代码片段: 在第一行,我们为 10 个整数的数组声明了空…

【前端】前端三要素之JavsScript基础

写在前面:本文仅包含JavaScript内容,DOM知识传送门在这里,BOM传送门在这里。 本文内容是假期中刷的黑马Pink老师视频(十分感谢Pink老师),原文保存在个人的GitLab中,如果需要写的网页内容信息等可…

笔记:torch.roll

最近在准备写 swin transformer 的文章,记录下 torch.roll 的用法: >>> x torch.tensor([1, 2, 3, 4, 5, 6, 7, 8]).view(4, 2) >>> x tensor([[1, 2],[3, 4],[5, 6],[7, 8]]) 第0维度向下移1位,多出的[7,8]补充到顶部 &g…

【Flink网络通讯(一)】Flink RPC框架的整体设计

文章目录 1. Akka基本概念与Actor模型2. Akka相关demo2.1. 创建Akka系统2.2. 根据path获取Actor并与之通讯 3. Flink RPC框架与Akka的关系4.运行时RPC整体架构设计5. RpcEndpoint的设计与实现 我们从整体的角度看一下Flink RPC通信框架的设计与实现,了解其底层Akka通…

JS进阶——解构赋值

数组解构 基本: let [a, b, c] [1, 2, 3]; // a 1 // b 2 // c 3 可嵌套 let [a, [[b], c]] [1, [[2], 3]]; // a 1 // b 2 // c 3 可忽略 let [a, , b] [1, 2, 3]; // a 1 // b 3 不完全解构 let [a 1, b] []; // a 1, b undefined 剩余运…

基于RHEL8部署Zabbix6.0,监控不再困难!

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

5G——物理层仿真

1.前置条件 2.仿真流程 1.填写搜索过程 解: 2.填写每一步细节 2.2.1 准备 解: (1)BCH (2)BCCH 解析:因为PBCH是物理广播信道,BCCH是用于广播系统控制信息的下行信道&#…

vulfocus靶场搭建

vulfocus靶场搭建 什么是vulfocus搭建教程靶场配置场景靶场编排靶场优化 什么是vulfocus Vulfocus 是一个漏洞集成平台,将漏洞环境 docker 镜像,放入即可使用,开箱即用,我们可以通过搭建该靶场,简单方便地复现一些框架…

数据库专题——分库分表

一. 分库分表介绍二. 分库分表实践 一. 分库分表介绍 1.1 分库分表解决了什么问题 先说分库: 《高性能MySQL》中提到了两种数据库扩展方式:垂直扩展和水平扩展。前者意味着买更多性能强悍的硬件,但是总会达到扩展的天花板,且成本…

​LeetCode解法汇总105. 从前序与中序遍历序列构造二叉树

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给定两个整…

js 多对象去重(多属性去重)

需求中发现后端可能没有处理重复数据,这个时候前段可以直接解决。 在 JavaScript 中,可以使用 Set 数据结构来进行多对象的去重。Set 是 ES6 新引入的集合类型,其特点是元素不会重复且无序。 下面是一个示例代码,展示如何通过 S…

python基础教程—总结篇

这篇是Python基础教程系列的总结篇,这里这个专栏的地址:《Python教程》 首先必须声明一点,这是基础教程,所以面向的是新人,没有学过Python的同学,所以这套教程并没有涉及到比较难的并发编程模块&#xff0…

【Git教程】(二)入门 ——关于工作区与版本库、版本提交、查看信息、克隆、推送与拉回的简单介绍 ~

Git教程 入门 1️⃣ 准备Git 环境1.1 创建版本库1.2 首次提交1.3 显示历史 2️⃣ Git 的协作功能2.1 克隆版本库2.2 从另一版本库中获取修改2.3 从任意版本库中取回修改2.4 创建共享版本库2.5 用 push 命令上载修改2.6 Pull 命令:取回修改 🌾 总结 如果…

GitHub使用记录

1.创建仓库 2.删除仓库 翻到最下面 3.将本地文件同步到云端库上 Github——git本地仓库建立与远程连接(最详细清晰版本!附简化步骤与常见错误)_将本地仓库与远程仓库关联-CSDN博客 第三步参考:Github——git本地仓库建立与远程连…

聚道云软件连接器:高科技企业财务自动化,提升效率准确性!

客户介绍: 某互联信息技术有限公司是一家专业从事信息技术服务的高科技企业,在业内享有较高的知名度和影响力。近年来,公司业务快速发展,对信息化建设提出了更高的要求。 客户痛点: 在传统情况下,该公司的…

XML Map 端口进阶篇——常用关键字和格式化器详解

XML Map 端口是用于在不同XML之间建立关系映射的工具,允许通过拖拽操作实现源XML和目标 XML之间的数据字段映射,除此之外,XML Map 端口还提供了其它丰富多彩的功能,使用户能够更加灵活和高效的处理XML 数据映射任务,让…

Ubuntu20.04安装Carla0.9.15

文章目录 环境要求下载Carla解压Carla运行Carla测试官方用例创建python环境安装依赖包案例:生成车辆案例:测试自动驾驶 参考链接 环境要求 系统配置要求: 至少3G显存的GPU,推荐3060及以上的显卡进行Carla拟真。预留足够的硬盘空…

Maxwell - 增量数据同步工具

前言 今天来学习一个新的大数据小工具 Maxwell ,它和 Sqoop 很像。Sqoop主要用于在 Hadoop (比如 HDFS、Hive、HBase 等)和关系型数据库之间进行数据的批量导入和导出,而 Maxwell 则主要用于监控数据库的变化(通过监控…

Linux内核解读

来自鹅厂架构师 作者:aurelianliu 工作过程中遇到的调度、内存、文件、网络等可以参考。 1.os运行态 X86架构,用户态运行在ring3,内核态运行在ring0,两个特权等级。 (1)内核、一些特权指令,例…