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

作品展示——有场地说明

背景需求:

前期做了一份“贴周计划”用的班主任版的户外游戏安排表(中X班19周,没有场地)

【办公类-16-07-02】“2023下学期 周计划-户外游戏 每班1周五天相同场地,6周一次循环”(python 排班表系列)-CSDN博客文章浏览阅读739次,点赞11次,收藏21次。【办公类-16-07-02】“2023下学期 周计划-户外游戏 每班1周五天相同场地,6周一次循环”(python 排班表系列)https://blog.csdn.net/reasonsummer/article/details/136176883

但是这份游戏表中对于“场地”有要求,因此实际日常操作中,每个班级需要看备注,才能知道自己班级的场地,

为了便于班主任知道自己班级每一天的户外游戏场地在哪里,我想在”美术游戏“后面加上”(场地),并对”角色游戏2套“”表演游戏“中的6个班级进行不同的场所备注。

代码展示:


#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



# '''班主任贴周计划用的(按班级分类)'''
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

# 生成6个班级(第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)
# [['中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班']]
print(len(L1))
# 6组基本    

# 每周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)
# #    ['中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班']
print(len(L))
# # 6组基本变出 144个班级,最后只要114个班级

    
# print('---------第2步:六类游戏乘以19周(只有一个)------')  
L4=['美术游戏(滑梯)','角色游戏','建构游戏(三楼露台)','表演游戏','沙水游戏(中庭)','角色游戏']
L6=[]
for v in range(weekweek):        # 19周a        
    for w in L4:
        # for l in range(5):# 美术游戏中1班一周玩5次,角色
            L6.append(w)
print(L6)
print(len(L6))
# 114

# 根据班级,增加角色、表演旁边的场地
# 中2班角色游戏、表演游戏场地——树屋                         中3班角色游戏、表演游戏场地——小农场
# 中4班角色游戏、表演游戏场地——大1班南门口                 中5班角色游戏、表演游戏场地——大3班南门口
# 中6班角色游戏、表演游戏场地——天台                         中7班角色游戏、表演游戏场地——天台

# a=len(room)
# 6

L5=[]
# coom=['2','3','4','5','6','7']
coom=['2','3','4','5','6','7']
room=['树屋','小农场','大1班南门','大3班南门','天台','天台',]

for cc in range(len(L6)):    
    if L6[cc]=='角色游戏' or L6[cc]=='表演游戏':          
        for kk in range(len(room)) :
            if L[cc]=='中{}班'.format(coom[kk]) :
                L5.append('{}({})'.format(L6[cc],room[kk]))  
        # if L[cc]=='中2班' :
        #     L5.append('{}(树屋)'.format(L6[cc]))
        # if L[cc]=='中3班' :
        #     L5.append('{}(小农场)'.format(L6[cc]))    
        # if L[cc]=='中4班' :
        #     L5.append('{}(大1班南门)'.format(L6[cc]))  
        # if L[cc]=='中5班' :
        #     L5.append('{}(大3班南门)'.format(L6[cc]))  
        # if L[cc]=='中6班' :
        #     L5.append('{}(天台)'.format(L6[cc]))  
        # if L[cc]=='中7班':
        #     L5.append('{}(天台)'.format(L6[cc]))  
          
        #  
    
    else:
        L5.append(L6[cc])
        # L5.append(L6[cc])
print(L5)
print(len(L5))
# 240


L7=[]

for ff in L5:
    for ww in range(5):
        L7.append(ff)
print(L7)
print(len(L7))
# 570/5=114

# #     print('---------第2步:如果一周有5天(不考虑跳过假日)------')

    # 限制19周的     
for j in range(0,int(len(L7)/5)):#第1周
    L2.append(L7[j*5:j*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()

不同班级不同的户外游戏内容及不同的场地

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React近一年的发展趋势与挑战,以及距离v19版本的进展情况

大家好,我是宝哥 React近一年的发展趋势和挑战主要体现在以下几个方面: 版本发布频率下降:React自上一次版本更新以来,已经有一年多没有发布新的稳定版本,这引起了社区的广泛关注和讨论。最后一次更新是在2022年6月&…

从入门到精通:AI绘画与修图实战指南

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在这篇文章中,我们将深入探讨如何利…

面试官:如何设计幂等性接口

什么是幂等性? 所谓幂等性,就是一次操作和多次操作同一个资源,所产生的影响均与一次操作的影响相同。 "幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。 幂等函数&…

ubuntu解决“E: Unable to locate package lrzsz“

今天在ubuntu上安装rzsz包时报错,提示无法定位包,提示如下 出现这个问题是因为apt的源没有更新,我们直接说解决办法 把下面的命令执行一遍即可 sudo add-apt-repository main sudo add-apt-repository universe sudo add-apt-repository re…

物流EDI:Verizon EDI 需求分析

作为物流行业的企业,Verizon与其供应商之间通过EDI来传输业务单据。在与Verizon建立EDI连接时,需要参考EDI 指南、采购订单条款和条件以及运输路线指南这三个文档。 点击此链接,获取上述的三个文档 Verizon供应商可以通过上述链接找到用于处…

ThreadLocal用法

一.项目需求 在我们进行新增用户时,会涉及到创建人和修改人字段如何获取的问题.我们不可能再后端将这两个字段写成静态的值. 1.1 解决方案 通过某种方式动态获取当前登录员工的id 员工登录成功后会生成JWT令牌并响应给前端: /*** 员工管理*/ RestController RequestMapping(&q…

【软考问题】-- 2 - IT知识 - 信息技术发展

一、基本问题 2 - IT知识 - 信息技术发展 问题1:数据库根据存储方式可以分为什么? 数据结构模型 层次模型:最早使用的 一种模型,它用 “树 ” 结构表示实体集之间的关联,其中实体集(用矩形框表示)为结点,而树中各结点之间的连线表示它们之间的关联。格式化数据模型 网状…

CDC 整合方案:MySQL > Flink CDC > Kafka > Hudi

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

力扣145 二叉树的后序遍历 Java版本

文章目录 题目描述递归解法代码 非递归解法思路代码 题目描述 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[3,2,1] 示例 2: 输入:root [] 输出…

log4j2的使用

基础用法 1. pom文件导入依赖 junit用来做测试 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.5</version></dependency><dependency><groupId>org.…

第五次作业(防御安全)

需求: 1.办公区设备可以通过电信链路和移动链路上网&#xff08;多对多的NAT&#xff0c;并且需要保留一个公网IP 不能用来转换&#xff09; 2.分公司设备可以通过总公司的移动链路和电信链路访问到DMZ区的http服务器 3.分公司内部的客户端可以通过公网地址访问到内部的服务…

两大公示 总结先行先试经验,提炼可复制推广成果

2024年1月18日&#xff0c;水利部官网发布《数字孪生水利建设典型案例名录&#xff08;2023年&#xff09;》&#xff08;共28项&#xff0c;排名不分先后&#xff09;、《数字孪生水利建设十大样板名单&#xff08;2023年&#xff09;》&#xff08;排名不分先后&#xff09;等…

从数据库中读取文件导出为Excel

使用的库&#xff08;org.apache.poi&#xff09; 在poi包中有Apache提供的各种分类文件&#xff0c;如下 结构功能HSSF读写Microsoft Excel XLS文件XSSF读写Microsoft Excel OOXML XLSX文件HWPF读写Microsoft Word DOC文件HSLF读写Microsoft PowerPoint文件 下面以XSSF为例&…

代码随想录算法训练营29期|day55 任务以及具体安排

第九章 动态规划part12 309.最佳买卖股票时机含冷冻期 class Solution {public int maxProfit(int[] prices) {//0代表持股票&#xff0c;1代表保持卖出状态&#xff0c;2代表卖出股票。3代表冷冻int[][] dp new int[prices.length][4];dp[0][0] -prices[0];for(int i 1 ; …

Redis事务长什么样?一文带你全面了解

一、概述 1.1、Redis事务简介 在 Redis 中&#xff0c;事务是一组命令的有序队列&#xff0c;Redis 使用 MULTI、EXEC、WATCH 和 DISCARD 等命令来实现事务。事务的执行是原子的&#xff0c;要么所有命令都执行成功&#xff0c;要么所有命令都不执行。事务中的命令在 EXEC 执行…

Avalonia学习(二十五)-系统界面

目前项目式练习&#xff0c;界面内容偏多&#xff0c;所以不给大家贴代码了&#xff0c;可以留言交流。此次为大家展示的是物联项目的例子&#xff0c;仅仅是学习&#xff0c;我把一些重点列举一下。 界面无边框 同前面 treeview控件 通过treevie控件导航 tabcontrol控件 …

AUTOSAR CP--chapter7从CAN网络学习Autosar通信

从CAN网络学习Autosar通信 前言缩写词CAN通信在AUTOSAR架构中的传输上位机配置 第六章总结&#xff1a;学习了如何使用工具的自动配置功能&#xff0c;位我们生成系统描述中部分ecu的BSW模块配置&#xff0c;但是自动配置的功能虽然为我们提供了极大的便利&#xff0c;我们仍然…

css3的var()函数

css3的var()函数 变量要以两个连字符--(横杆)(减号)为开头 变量可以在:root{}中定义, :root可以在css中创建全局样式变量。通过 :root本身写的样式&#xff0c;相当于 html&#xff0c;但优先级比后者高。 在CSS3中&#xff0c;var()函数是一个用于插入CSS自定义属性&#xff…

Active Directory 的密码管理策略

员工使用的密码可以决定或破坏组织中的数据安全性&#xff0c;但是&#xff0c;知道员工通常不遵循良好的密码卫生习惯也就不足为奇了。从在本机工具&#xff08;如 Windows Active Directory 组策略&#xff09;中设置弱密码和通用密码到宽松的密码策略规则&#xff0c;有几个…

Eclipse - Text Editors (文本编辑器)

Eclipse - Text Editors [文本编辑器] References Window -> Preferences -> General -> Editors -> Text Editors Displayed tab witdth: 4 勾选 Insert spaces for tabs 勾选 Show line number References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.n…