python-3.x 在24小时制的开始时间和结束时间上下文中,返回start+3和end-3范围内的所有小时

6tr1vspr  于 2023-01-14  发布在  Python
关注(0)|答案(2)|浏览(90)

我需要在班次开始后至少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编写这个计算的逻辑。

8ftvxx2r

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]
nxowjjhe

nxowjjhe2#

start += 3
end -= 3
if end < start:
    end += 24
return [hour % 24 for hour in range(start, end+1)]

相关问题