【办公类-16-07-07】“2023下学期 中班户外游戏2(有场地和无场地版,每天不同场地)”(python 排班表系列)

作品展示

背景需求:

2024年2月教务组发放的是“每周五天内容相同,两周10天内容相同”的户外游戏安排

【办公类-16-07-05】合并版“2023下学期 大班户外游戏(有场地和无场地版,两周一次)”(python 排班表系列)-CSDN博客文章浏览阅读450次,点赞6次,收藏5次。【办公类-16-07-05】合并版“2023下学期 大班户外游戏(有场地和无场地版,两周一次)”(python 排班表系列)https://blog.csdn.net/reasonsummer/article/details/136197861

教学环节不断动态优化,2024年3月教务组又改了户外游戏安排。o(╥﹏╥)o

所以又要重新做一份“有场地”(贴墙实际操作版)和“无场地(贴会周计划)版本”

素材准备:

新的中班户外游戏安排表内容

这张表看起来,相当繁琐,

1、表格阅读繁琐

本次表格在实际使用中查看非常麻烦,如果需要先找到第4周(翻到第5张表),然后查看左侧的星期列,找到星期三,然后横向向右去查看中4班在那个位置,顺着中4班级格子向上查看是什么项目(表演游戏),然后把文档翻到最下面备注,查看场地。

因此,我努力把它“”翻译“成班级用的EXCEL。

2、转换成横排模式,突出游戏场地

以前的星期都是横排的,班级在左侧列,活动场地分布在X-Y的矩阵内。因此我想将第一周表格转换成以下样式,来确定“游戏场地”的分布情况

从第1周看,这次的场地是【12345,】,【61234】,【56123】的移动方式。从第2周看,第2周的中2的五天内容与第1周的中3内容相同。

因此代码修改如下:



'''
中班6个班级
2023学年下学期中班户外游戏安排_有场地和无场地 两个版本
(6个班级 每周每天换一个场地5天,)
作者:阿夏
时间:2024年3月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())
    print(len(gradenum))#     
    # # ['2','3','4','5','6','7']

    L8=[]# 班级数列
    for b in range(19):
        for d in gradenum:        
            L8.append(d)
    print(L8)
    print(len(L8))

    # 制作19*5*6个元素,以便替换(备注)内容
    L1=[]# 班级
    for b in range(19):
        for d in gradenum:
            for c in range(5):
                L1.append(d)
    print(L1)
    print(len(L1))
    # 570


   
        # # print('---------第2步:制作六类游戏的五天列表------')  
    
    ts =19*5
    L=[]# 班级
    L11=[]
    L3=[]  
    L2=[]
    L4=[]
    
    # 这里是8个活动室游戏活动室,因为后面有递进,所以把最后一个 08,放到01前面,这样摆放后面才会正确)
    L3=['美术游戏(滑梯)','角色游戏','沙水游戏(中庭)','表演游戏','建构游戏(三楼露台)','角色游戏',]

        # 将1移动到5的后面
    L3.append(L3.pop(0))

    # 循环提取,获得5天一组的基础
    L11=[]
    for i in range(6):
        # 将5移动到1的前面
        L3.insert(0, L3.pop())
        # print(L3)
        L11.append(L3[0:5])
    # print(L11)
       
    # ['美术游戏(滑梯)', '角色游戏', '沙水游戏(中庭)', '表演游戏', '建构游戏(三楼露台)']
    # ['角色游戏', '美术游戏(滑梯)', '角色游戏', '沙水游戏(中庭)', '表演游戏']
    # ['建构游戏(三楼露台)', '角色游戏', '美术游戏(滑梯)', '角色游戏', '沙水游戏(中庭)']
    # ['表演游戏', '建构游戏(三楼露台)', '角色游戏', '美术游戏(滑梯)', '角色游戏']
    # ['沙水游戏(中庭)', '表演游戏', '建构游戏(三楼露台)', '角色游戏', '美术游戏(滑梯)']
    # ['角色游戏', '沙水游戏(中庭)', '表演游戏', '建构游戏(三楼露台)', '角色游戏']

    # 6种基本形体,遍历20次
    L12=[]
    for o1 in range(20):
        for o2 in L11:        
            L12.append(o2)
    # print(L12)
    # print(len(L12))
    # 120


    

    L13=[]
    for i in range(19):
        # 将5移动到1的前面
        
        L13.append(L12[i:i+6])
    print(L13)

    L6=[] 
    for b1 in L13:
        for b2 in b1: 
            for b3 in b2:
                L6.append(b3)
    
    print(L6)
    print(len(L6))

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


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

           
    print(L5)
    print(len(L5))

    L7=[]

    for ff in L5:
        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))    


    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(gradenum)):
            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(L8[:len(dates)])):        # 只要班级列表的前114个        
        sheet.write(row,0,L8[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\桌面\周计划\测试.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\桌面\周计划\测试.xls')
    if aaa==1:
        writer = pd.ExcelWriter(r'C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240310 下学期中班户外游戏一周五天不同区域有场地(班主任用).xls')
    if aaa==2:
        writer = pd.ExcelWriter(r'C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240310 下学期中班户外游戏一周五天不同区域无场地(班主任用).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\桌面\周计划\测试.xls')


感悟:

一、通过Python程序,将户外游戏安排表(总表)上的内容,转换为班本化的,可以实现:

1、标明各班每周每天的户外游戏内容(场地),便于班主任快速查看操作

2、制作无场地的户外游戏表,便于黏贴周计划。

二、更迅速应对工作中的“反复”,调整心态。

有了程序,在面对“上级”的“课(fan)程(fu)优(wu)化(chang),我就能多一些控制感,少一些抱怨,快速适应变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值