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


    背景需求:

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

    【办公类-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

    代码展示:

    1. #20230217
    2. '''
    3. 中班6个班级
    4. 2023学年下学期中班户外游戏安排_有场地和无场地 两个版本
    5. (6个班级 每周玩一个场地5天,第二周轮换 )
    6. 作者:阿夏
    7. 时间:2024年2月20日
    8. '''
    9. # import sys
    10. # sys.path.append('/path/to/openpyxl')
    11. import sys
    12. import random
    13. import xlrd
    14. import xlwt
    15. from openpyxl import load_workbook
    16. import time
    17. # '''班主任贴周计划用的(按班级分类)'''
    18. weekweek=19
    19. # int(input('共有几周?(如19周 20)\n'))
    20. # aaa=int(input('1、需要场地、2、不要场地\n'))
    21. for aaa in [1,2]:
    22. print('---------第1步:制作每个班级的游戏的总表------')
    23. # 本学期:大1,大2,大3,大4,大5,大7,大8,大9班,其中6班空缺,一共有8个大班
    24. gradenum=[]
    25. for g in range(2,8):
    26. gradenum.append('中{}班'.format(g))
    27. print(gradenum)
    28. gradenum.insert(0, gradenum.pop())
    29. # ['2','3','4','5','6','7']
    30. print(len(gradenum))# 8
    31. L=[]# 班级
    32. L1=[]
    33. L3=[]
    34. L2=[]
    35. L4=[]
    36. # 这里是8个活动室游戏活动室,因为后面有递进,所以把最后一个 08,放到01前面,这样摆放后面才会正确)
    37. # L3=['美术游戏','角色游戏','建构游戏','表演游戏','沙水游戏','角色游戏']原始
    38. L3=gradenum
    39. # 生成6个班级(第1个元素不同)
    40. for i in range(0,len(gradenum)): #
    41. b = L3.pop(0) # 在班级列表L3中 删除 第1个元素 大1班 先删除08,就是从01开始
    42. L3.append(b) # 在班级列表L3最后 添加 第1个元素
    43. # print(L[0])
    44. L1.append(L3[0:len(gradenum)]) # 把不断变化的内容添加到L1
    45. # 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',
    46. print(L1)
    47. # [['中2班', '中3班', '中4班', '中5班', '中6班', '中7班'], ['中3班', '中4班', '中5班', '中6班', '中7班', '中2班'], ['中4班', '中5班', '中6班', '中7班', '中2班', '中3班'], ['中5班', '中6班', '中7班', '中
    48. # 2班', '中3班', '中4班'], ['中6班', '中7班', '中2班', '中3班', '中4班', '中5班'], ['中7班', '中2班', '中3班', '中4班', '中5班', '中6班']]
    49. print(len(L1))
    50. # 6组基本
    51. # 每周6个班级,基础模板6次 L=班级
    52. for b in range(4): # 把各班“游戏活动室基本元素8个”循环21次,数量多一点,便于后期提取内容
    53. for y in L1:
    54. 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'],
    55. # 在用 y提取L1[0]中的'01', '02', '03', '04', '05', '06', '07', '08'三个元素
    56. L.append(z) #把y提取的单个元素一个个加到列表里,并且依次循环22次,数量足够多
    57. print(L)
    58. # # ['中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班', '中
    59. # # 5班', '中6班', '中7班', '中2班', '中4班', '中5班', '中6班', '中7班', '中2班', '中3班', '中5班', '中6班', '中7班', '中2班', '中3班', '中4班', '中6班', '中7班', '中2班', '中3班', '中4班', '中5班', '中7
    60. # # 班', '中2班', '中3班', '中4班', '中5班', '中6班', '中2班', '中3班', '中4班', '中5班', '中6班', '中7班', '中3班', '中4班', '中5班', '中6班', '中7班', '中2班', '中4班', '中5班', '中6班', '中7班', '中2班
    61. # # ', '中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班']
    62. print(len(L))
    63. # # 6组基本变出 144个班级,最后只要114个班级
    64. # print('---------第2步:六类游戏乘以19周(只有一个)------')
    65. L4=['美术游戏(滑梯)','角色游戏','建构游戏(三楼露台)','表演游戏','沙水游戏(中庭)','角色游戏']
    66. L6=[]
    67. for v in range(weekweek): # 19周a
    68. for w in L4:
    69. # for l in range(5):# 美术游戏中1班一周玩5次,角色
    70. L6.append(w)
    71. print(L6)
    72. print(len(L6))
    73. # 114
    74. # 根据班级,增加角色、表演旁边的场地
    75. # 中2班角色游戏、表演游戏场地——树屋 中3班角色游戏、表演游戏场地——小农场
    76. # 中4班角色游戏、表演游戏场地——大1班南门口 中5班角色游戏、表演游戏场地——大3班南门口
    77. # 中6班角色游戏、表演游戏场地——天台 中7班角色游戏、表演游戏场地——天台
    78. # a=len(room)
    79. # 6
    80. L5=[]
    81. # coom=['2','3','4','5','6','7']
    82. coom=['2','3','4','5','6','7']
    83. room=['树屋','小农场','大1班南门','大3班南门','天台','天台',]
    84. for cc in range(len(L6)):
    85. if L6[cc]=='角色游戏' or L6[cc]=='表演游戏':
    86. for kk in range(len(room)) :
    87. if L[cc]=='中{}班'.format(coom[kk]) :
    88. L5.append('{}({})'.format(L6[cc],room[kk]))
    89. # if L[cc]=='中2班' :
    90. # L5.append('{}(树屋)'.format(L6[cc]))
    91. # if L[cc]=='中3班' :
    92. # L5.append('{}(小农场)'.format(L6[cc]))
    93. # if L[cc]=='中4班' :
    94. # L5.append('{}(大1班南门)'.format(L6[cc]))
    95. # if L[cc]=='中5班' :
    96. # L5.append('{}(大3班南门)'.format(L6[cc]))
    97. # if L[cc]=='中6班' :
    98. # L5.append('{}(天台)'.format(L6[cc]))
    99. # if L[cc]=='中7班':
    100. # L5.append('{}(天台)'.format(L6[cc]))
    101. #
    102. else:
    103. L5.append(L6[cc])
    104. # L5.append(L6[cc])
    105. print(L5)
    106. print(len(L5))
    107. # 240
    108. L7=[]
    109. for ff in L5:
    110. for ww in range(5):
    111. if aaa==1:
    112. L7.append(ff) # 美术活动(操场)
    113. if aaa==2:
    114. L7.append(ff[:4]) # 美术活动
    115. print(L7)
    116. print(len(L7))
    117. # 570/5=114
    118. # # print('---------第2步:如果一周有5天(不考虑跳过假日)------')
    119. # 限制19周的
    120. for j in range(0,int(len(L7)/5)):#第1周
    121. L2.append(L7[j*5:j*5+5])
    122. print(L2)
    123. print(len(L2))
    124. # 114
    125. # L2=角色游戏等6类游戏的嵌套列表
    126. # # # # print('---------第3步:如果每周需要跳过假日(考虑跳过假日)------')
    127. # # # # # 每周需要的天数 (跳过节日.如第1周只有2天工作,9月1-2日(周四周五) ,第3周周一是中秋节放假1天,所以只有4个工作日)
    128. # # # # day=['2','5','4','5','5','2','5','5','5','5','5','5','5','5','5','5','5','4','5','5','2']
    129. # # # # print('中{}班'.format(gradenum[num]))
    130. # # # # # 第1周
    131. # # # # for d in range(0,1): # d=索引数字
    132. # # # # print(L[0:int(day[0])]) # 列表有8个活动室项目,但只要其中5个(周一到周五)
    133. # # # # L2.append(L[0:int(day[0])])
    134. # # # # # 第2周开始
    135. # # # # for d in range(1,len(day)): # 0-21
    136. # # # # # print(d+1)
    137. # # # # L=L[int(day[d-1]):] # day[0]=2,
    138. # # # # L.append(L) # 将a安排到最后一个座位
    139. # # # # print(L[0:int(day[d])])# 列表是八个循环,我只要其中5个
    140. # # # # L2.append(L[0:int(day[d])])
    141. # # # # 以下是跳过假日的最初的写法,太长了,研究上面的是2022.9.9-2023.1.17 共21周的假日安排
    142. print('---------第4-1步:xls写入)------')
    143. workbook = xlwt.Workbook()# 新建xls工作簿
    144. sheet = workbook.add_sheet("Sheet")# 新建xls工作簿的工作表的名字是sheet
    145. print('---------第4-2步:第1行 写入 星期一等)------')
    146. weeks = ['班级','周次','星期一','星期二','星期三','星期四','星期五',]
    147. # weeks=['周次','美术游戏','角色游戏','建构游戏','表演游戏','沙水游戏','角色游戏']
    148. week = len(weeks)
    149. col=0
    150. for d in range(0, len(weeks)):
    151. sheet.write(0,col,weeks[d]) # 因为只有一行,所以就用有两种写法(enumerate和这种)
    152. col+= 1
    153. print('---------第4-3步:第2列写入周次)------') # 第0列 写入“第1周、第2周、第3周……第21周
    154. dates=[]
    155. # 制作第一列的所有文字
    156. for i in range(1,int(weekweek+1)):
    157. for r in range(len(L4)):
    158. n="第{}周".format('%02d'%i) # 用遍历方法获得“第1周、第2周、第21周”字样,
    159. dates.append(n) # 添加到列表 s
    160. print(dates)
    161. print(len(dates))
    162. #114
    163. # 写入周次
    164. row=1
    165. for d in range(0, len(dates)):
    166. sheet.write(row, 1, dates[d]) # 这里enumerate不能用,因为只有一列,所以就用
    167. row += 1
    168. print('---------第4-3步:第1列写入班级)------')
    169. # 写入班级列 L=班级列
    170. row=1
    171. for h in range(0, len(L[:len(dates)])): # 只要班级列表的前114个
    172. sheet.write(row,0,L[h]) # 因为只有一行,所以就用有两种写法(enumerate和这种)
    173. row += 1
    174. print('---------第4-5步:第3-9列写入游戏内容一周五次相同)------')
    175. row=1
    176. # 写入游戏内容列 L2=游戏内容一周五个
    177. for i in range((len(L2))): # 遍历21组[]的总数
    178. for col,item in enumerate(L2[i],2): # L2[i]=表格内的内容=item,索引数字=col
    179. sheet.write(row,col,item) # row,col,item 行=1、列=索引数字、内容=表格内容 写入第一行第一列
    180. row += 1
    181. #
    182. print('---------第5步:xls保存N份工作簿(每份一页)------')
    183. try:
    184. workbook.save(r"C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240218 下学期中班户外游戏一周五天相同场地(班主任用).xls") # 新建保存 只能xls
    185. print('计划生成成功')
    186. except e:
    187. print('失败...')
    188. print(e)
    189. # print('---------第6步:把1份xls按照班级,分类成N个不同的工作表内(班主任贴周计划用)------')
    190. # https://blog.csdn.net/xo3ylAF9kGs/article/details/135856653
    191. # 切割成同表
    192. import pandas as pd
    193. import os
    194. df = pd.read_excel(r'C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240218 下学期中班户外游戏一周五天相同场地(班主任用).xls')
    195. if aaa==1:
    196. writer = pd.ExcelWriter(r'C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240218 下学期中班户外游戏一周五天相同有场地(班主任用).xls')
    197. if aaa==2:
    198. writer = pd.ExcelWriter(r'C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240218 下学期中班户外游戏一周五天相同无场地(班主任用).xls')
    199. df.to_excel(writer, sheet_name='Sheet', index=False)
    200. for j in df['班级'].unique():
    201. df[df['班级'] == j].to_excel(writer, sheet_name=j+'户外游戏', index=False)
    202. writer.save()
    203. # 删除过渡EXCLE
    204. os.remove(r'C:\Users\jg2yXRZ\OneDrive\桌面\周计划\20240218 下学期中班户外游戏一周五天相同场地(班主任用).xls')

    重点说明:

    作品展示:

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

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

  • 相关阅读:
    Java 算法篇-深入理解递归(递归实现:青蛙爬楼梯)
    【图像去雾】基于颜色衰减先验的图像去雾附matlab代码
    leetcode - 1428. Leftmost Column with at Least a One
    拦截器
    Jenkins如何新建一个项目
    解决mac运行scrcpy报错库找不到的问题
    MySQL高级
    汽车行业怎么做网络推广有效果?汽车行业怎样做线上推广?
    使用kubeadm部署kubernetes集群
    ES6 模块化编程 详解
  • 原文地址:https://blog.csdn.net/reasonsummer/article/details/136196822