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:
        # 平均分配其他人员
        for person in people:
            if day in available_days[person]:
                schedule[week].append(person)
                people.remove(person)
                break
        # 如果people列表为空,则重新填充
        if len(people) == 0:
            people = ['张莹', '范艾利', '温海霞', '柯乔', '冀腾宇', '程姣姣', '曹立帆']

打印所有20周的排班

for week in range(1, 21): print(f"Week {week}: {schedule[week]}")

Python自动排班:确保每天有人值班,避免连续值班

原文地址: https://www.cveoy.top/t/topic/okzj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录