修改以下代码使得20周内每天都要有一个人排班不要只把除班主任外的七个人排一次要让每天都有人排班!要让每天都有人排班!!不能 空着:import random# 定义人员列表people = 张莹 范艾利 温海霞 柯乔 冀腾宇 程姣姣 曹立帆# 定义可选的工作日列表available_days = 张莹 周一 范艾利 周一 周三 周四 温海霞 周三 柯乔 周一 周二 周六
import random
定义人员列表
people = ['张莹', '范艾利', '温海霞', '柯乔', '冀腾宇', '程姣姣', '曹立帆']
定义可选的工作日列表
available_days = { '张莹': ['周一'], '范艾利': ['周一', '周三', '周四'], '温海霞': ['周三'], '柯乔': ['周一', '周二', '周六'], '冀腾宇': ['周四', '周二', '周三'], '程姣姣': ['周一', '周二', '周三', '周四', '周五', '周六', '周日'], '曹立帆': ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] }
定义班主任列表
tutors = list(range(1, 21))
定义班主任需要排班的日期
tutor_days = ['周五']
初始化排班字典
schedule = {} for i in range(1, 21): schedule[i] = []
循环填充每周的排班
for week in range(1, 21): # 随机排序人员列表 random.shuffle(people)
# 分配人员到工作日
for day in ['周一', '周二', '周三', '周四', '周五', '周六', '周日']:
if day in tutor_days:
# 每周五排班给班主任
schedule[week].append(tutors.pop(0))
else:
# 平均分配其他人员
assigned = False
for person in people:
if day in available_days[person]:
schedule[week].append(person)
people.remove(person)
assigned = True
break
if not assigned:
schedule[week].append(people.pop(0))
打印所有20周的排班
for week in range(1, 21): print(f"Week {week}: {schedule[week]}")
原文地址: https://www.cveoy.top/t/topic/i14Z 著作权归作者所有。请勿转载和采集!