Пишу потихоньку генератор графика дежурств:
import random import calendar from datetime import datetime, timedelta # структура данных для дежурств # ключи - люди, значения - список дежурств на выходные дни в месяце # в данном случае задаем имена людей на русском языке schedule = { 'Сотрудник1': [], 'Сотрудник2': [], 'Сотрудник3': [], 'Сотрудник4': [], } # задаем месяц и год year = 2023 month = 4 # количество выходных дней в месяце weekends_count = len( [1 for day in calendar.Calendar().itermonthdays2(year, month) if day[0] != 0 and day[1] == 5 or day[1] == 6] ) # количество людей в расписании people_count = len(schedule) # количество дежурств на одного человека person_weekend_assignments = weekends_count // people_count # проверяем, что дежурств достаточно для всех людей if person_weekend_assignments < 1: print('Недостаточно выходных дней в месяце для распределения дежурств') else: # создаем список выходных дней в месяце weekend_days = [day[0] for day in calendar.Calendar().itermonthdays2(year, month) if day[0] != 0 and (day[1] == 5 or day[1] == 6)] # равномерно распределяем дежурства по людям for i, (person, assignments) in enumerate(schedule.items()): start_index = i * person_weekend_assignments end_index = start_index + person_weekend_assignments if i == people_count - 1: end_index += weekends_count % people_count assignments.extend(weekend_days[start_index:end_index]) # выводим результат for person, assignments in schedule.items(): print(person + ':', assignments)
Сотрудник1:
Сотрудник2:
Сотрудник3:
Сотрудник4:
А как сделать чтобы получилось:
Сотрудник1:
Сотрудник2:
Сотрудник3:
Сотрудник4:
Сотрудник1: