我需要在班次开始后至少3小时和班次结束后至少3小时设置休息。
示例:
Start = 17 End = 3 Result = [20,21,22,23,0]
另一个例子:
Start = 7 End = 19 Result = [10,11,12,13,14,15,16]
我想知道如何用Python编写这个计算的逻辑。
8ftvxx2r1#
您可以在开始处加上3,然后在结束处减去2。检查以确保结束处更大(如果没有加上24)。然后对小时数取模24。您需要处理时间完全绕回和班次为空的情况:
def get_hours(start, end): if 0 < end - start < 6: return [] start += 3 end -= 2 return [hour % 24 for hour in range(start, end if end > start else end + 24)] get_hours(17, 3) # [20, 21, 22, 23, 0] get_hours(7, 19) # [10, 11, 12, 13, 14, 15, 16] get_hours(2, 1) # really long shift # [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] get_hours(1, 4) # really short shift (not 4am to 1am) # [] get_hours(1, 7) # short but not empty shift # [4]
nxowjjhe2#
start += 3 end -= 3 if end < start: end += 24 return [hour % 24 for hour in range(start, end+1)]
2条答案
按热度按时间8ftvxx2r1#
您可以在开始处加上3,然后在结束处减去2。检查以确保结束处更大(如果没有加上24)。然后对小时数取模24。您需要处理时间完全绕回和班次为空的情况:
nxowjjhe2#