Untitled
unknown
plain_text
2 years ago
1.8 kB
4
Indexable
busy = [{ 'start': '10:30',
'stop': '10:50'},
{'start': '18:40',
'stop': '18:50'},
{'start': '14:40',
'stop' : '15:50'},
{'start': '16:40',
'stop': '17:20'},
{'start': '20:05',
'stop': '20:20'}
]
#Время начала и конца рабочего дня в часах
start = 9
finish = 21
#Переводим в минуты, общему знаменателю для дальнейших вычислений
start *= 60
finish *= 60
for time_pice in busy:
for key in time_pice:
#Переводим время в целое число минут
time_pice[key] = list(map(int, time_pice[key].split(":")))
time_pice[key] = time_pice[key][0]*60 + time_pice[key][1]
#Сортируем список дел по времени начала дела
busy = [value for value in sorted(busy, key=lambda item: item['start'])]
#Допустим завершение рабочего дня - последнее дело в рабочем дне
busy.append({ 'start': finish,
'stop': finish})
#Для того чтобы следующий цикл разбил на промежутки период от последнего дела, до конца рабочего дня
def minuts_to_hmm(minuts):
return f"{minuts//60}:{0 if minuts%60 < 10 else ''}{minuts%60}"
free = []
for time_pice in busy:
for i in range((time_pice['start'] - start)//30):
free.append({'start': minuts_to_hmm(start + i * 30),
'stop': minuts_to_hmm(start + (i + 1) * 30)})
start = time_pice['stop']
for time_window in free:
print(time_window)
print(len(free))Editor is loading...
Leave a Comment