【办公类-16-07-04】合并版“2023下学期 中班户外游戏(有场地和无场地版,一周一次)”(python 排班表系列)

news2025/1/12 12:08:28

背景需求:

无场地版(贴周计划用)有场地版(贴教室墙壁上用) 组合在一起,一个代码生成两套。

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

代码展示:


#20230217 


'''
中班6个班级
2023学年下学期中班户外游戏安排_有场地和无场地 两个版本
(6个班级 每周玩一个场地5天,第二周轮换 )
作者:阿夏
时间:2024年2月20日
'''

# 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'))
# aaa=int(input('1、需要场地、2、不要场地\n'))

for aaa in [1,2]:




    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):
            if aaa==1:
                L7.append(ff)        # 美术活动(操场)
            if aaa==2:
                L7.append(ff[:4])      # 美术活动
    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')
    if aaa==1:
        writer = pd.ExcelWriter(r'C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240218 下学期中班户外游戏一周五天相同有场地(班主任用).xls')
    if aaa==2:
        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()



# 删除过渡EXCLE
os.remove(r'C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240218 下学期中班户外游戏一周五天相同场地(班主任用).xls')


重点说明:

作品展示:

一、无场地版——贴周计划用(贴周计划上的空格,宽度有限,最好4个字符)

二、有场地版——贴墙用(便于每天查看活动内容和区域,尽量在A4一页上)

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

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

相关文章

使用 Docker 安装 Kibana 8.4.3

使用 Docker 安装 Kibana 8.4.3 一. 安装启动 Kibana 8.4.3二. 简单使用2.1 向 Elasticsearch 发送请求2.2 搜索2.3 整体页面 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 安装k…

【Linux系统化学习】动静态库 | 软硬链接

目录 硬链接和软链接 硬链接 软链接 动态库和静态库 静态库 静态库的生成 静态库的使用 将库打包和使用 动态库 动态库的生成 动态库的使用 库搜索路径 硬链接和软链接 硬链接 上篇文章我们说到真正找到磁盘上的文件并不是文件名,而是inode。其实在…

CTFshow web(sql注入171-175)

web171 还得先爆表名 -1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema database()-- 注意这里已经提示你了,只要知道是ctfshow_user,就可以拿到flag -1 union select 1,2,password from ctfshow_user…

神经网络算法 —— Embedding(嵌入)!!

文章目录 前言 1、Embedding的本质 (1)机器学习中的Embedding (2)NLP中的Embedding 2、Embedding的原理 (1)Image Embedding(图像嵌入) (2)Word Embedding&am…

vue创建项目报:Error: command failed: yarn

我的文件在:C:\Users\Administrator 下 原来里面 useTaobaoRegistry 是否使用淘宝源 是 false ,我改为true就好了 也可以 packageManager 默认安装工具 改为 npm 或 cnpm 原文连接:vue创建项目报:Error: command failed: yarn-阿…

企业客户服务的细节关注与客户满意度的提升

在今天这个竞争激烈的市场环境中,企业要想在众多的竞争者中脱颖而出,仅仅依靠优质的产品或服务已经无法满足。企业必须更深入地理解和满足客户的需求,提供超出客户期望的服务,才能真正赢得客户的忠诚和满意。那么,如何…

redis分布式锁redisson

文章目录 1. 分布式锁1.1 基本原理和实现方式对比synchronized锁在集群模式下的问题多jvm使用同一个锁监视器分布式锁概念分布式锁须满足的条件分布式锁的实现 1.2 基于Redis的分布式锁获取锁&释放锁操作示例 基于Redis实现分布式锁初级版本ILock接口SimpleRedisLock使用示…

mysql 2-20

TEXT类型 枚举类型 SET类型 二进制字符串类型 BLOB类型 注意事项 JSON类型 提取数据 空间类型 选择建议 约束

[极客大挑战2019]upload

该题考点&#xff1a;后缀黑名单文件内容过滤php木马的几种书写方法 phtml可以解析php代码&#xff1b;<script language"php">eval($_POST[cmd]);</script> 犯蠢的点儿&#xff1a;利用html、php空格和php.不解析<script language"php"&…

更新至2022年,1997-2022年各省农林牧渔总产值及指数相关指标数据合集(10个指标)

更新至2022年&#xff0c;1997-2022年各省农林牧渔总产值及指数相关指标数据合集&#xff08;10个指标&#xff09; 1、时间&#xff1a;1997-2022年&#xff0c;具体指标时间见下文 2、来源&#xff1a;国家统计局、统计年鉴 3、范围&#xff1a;31省 4、指标&#xff1a;…

查看halcon算子的执行时间

点击这个时钟&#xff0c; 运行程序以后就能看到算子的消耗时间

GDAL一行代码实现投影:将栅格的地理坐标系转为投影坐标系

本文介绍基于gdal模块&#xff0c;在命令行中通过GDAL命令的方式&#xff08;不是Python或者C 代码&#xff0c;就是gdal模块自身提供的命令行工具&#xff09;&#xff0c;对栅格遥感影像数据加以投影&#xff0c;即将原本的地理坐标系转为投影坐标系的方法。 首先明确一下本文…

Django后台管理(一)

一、admin介绍 Django 最强大的部分之一是自动管理界面。它从你的模型中读取元数据,提供一个快速的、以模型为中心的界面,受信任的用户可以管理你网站上的内容 官网:https://docs.djangoproject.com/zh-hans/4.1/ref/contrib/admin/ 提示 后台管理系统是管理人员使用,不是…

AD24-开窗

一、PCB阻焊开窗处理 开窗效果图 1、将铜皮选中&#xff0c;复制&#xff0c;来到阻焊层&#xff0c;利用特殊粘贴 2、如出现报错&#xff0c;可利用实心填充在阻焊层进行重新绘制&#xff1b;在3D状态下进行查看 3、放置一块填充&#xff1b;称为露基材&#xff08;PCB材料&am…

发展至今的抖店,还值得新手去入驻吗?

我是电商珠珠 抖店从19年发展到现在已经有三年多的时间了&#xff0c;平台也已渐趋平稳&#xff0c;政策福利没有当初19年的那么大&#xff0c;所以很多新手在门外观望&#xff0c;这个项目的可行性。 我从20年开始做抖店&#xff0c;算是站到了项目的风口上&#xff0c;有人…

基于shp数据制作3DTiles建筑白膜

经纬管网建模系统MagicPipe3D&#xff0c;本地离线参数化构建地下管网、建筑三维模型&#xff0c;输出标准3DTiles服务、Obj模型等格式&#xff0c;支持Cesium、Unreal、Unity、Osg等引擎加载进行三维可视化、语义查询、专题分析。欢迎下载试用&#xff1a;http://www.magic3d.…

腾讯云4核8G12M服务器4c或4h什么意思?8g是什么?

4核8G是云服务器的参数&#xff0c;代表云服务器的硬件配置和网络带宽&#xff0c;4核代表CPU、8G是指内存、12M代表带宽值为12Mbps&#xff0c;腾讯云百科txybk.com以腾讯云轻量应用服务器4核8G12M带宽配置为例&#xff0c;来详细介绍下服务器参数&#xff1a; 4c8g是什么意思…

正交匹配追踪算法(Orthogonal Matching Pursuit)实现过程及Python模拟

正交匹配追踪&#xff08;Orthogonal Matching Pursuit&#xff0c;OMP&#xff09;是一种用于寻找稀疏信号的贪婪算法&#xff0c;用于求解压缩感知问题中的稀疏近似问题。在压缩感知的背景下&#xff0c;通常我们有一个欠定的线性系统Ax y&#xff0c;其中A是一个已知的测量…

【蓝桥杯单片机入门记录】Keil C51仿真调试

目录 一、仿真调试/在线调试的意义 二、程序调试 &#xff08;1&#xff09;修改模拟仿真晶振频率&#xff08;和实际使用保持一致&#xff09; &#xff08;2&#xff09;Debug程序界面设置&#xff08;模拟调试&#xff09; &#xff08;3&#xff09;利用工具栏的Debug…

【LeetCode】无权图的最短路精选7题——单源、多源

目录 无权图的单源最短路问题&#xff1a; 1. 迷宫中离入口最近的出口&#xff08;中等&#xff09; 2. 最小基因变化&#xff08;中等&#xff09; 3. 单词接龙&#xff08;困难&#xff09; 4. 为高尔夫比赛砍树&#xff08;困难&#xff09; 无权图的多源最短路问题&a…