0
我正在寫一個小型Python腳本來查找基於日曆約會的時間可用插槽。我能夠在這裏重新使用這個帖子上的代碼:(Python - Algorithm find time slots)。Python - 查找時間槽
它似乎適用於預約約一個小時或更長時間,但對於那些不到一個小時,它似乎並沒有趕上他們。換句話說,即使約會預約(不到一個月),它也顯示時間段可用。
下面的示例代碼來自後面提到的,用我自己的「小時」和「約會」值。
#get_timeslots.py
from datetime import datetime, timedelta
appointments = [(datetime.datetime(2017, 9, 7, 9, 30),
datetime.datetime(2017, 9, 7, 12, 30),
datetime.datetime(2017, 9, 7, 13, 30),
datetime.datetime(2017, 9, 7, 14, 0))]
hours = (datetime.datetime(2017, 9, 7, 6, 0), datetime.datetime(2017, 9, 7, 23, 0))
def get_slots(hours, appointments, duration=timedelta(hours=1)):
slots = sorted([(hours[0], hours[0])] + appointments + [(hours[1], hours[1])])
for start, end in ((slots[i][1], slots[i+1][0]) for i in range(len(slots)-1)):
assert start <= end, "Cannot attend all appointments"
while start + duration <= end:
print "{:%H:%M} - {:%H:%M}".format(start, start + duration)
start += duration
if __name__ == "__main__":
get_slots(hours, appointments)
當我運行該腳本,我得到:
06:00 - 07:00
07:00 - 08:00
08:00 - 09:00
12:30 - 13:30
13:30 - 14:30
14:30 - 15:30
15:30 - 16:30
16:30 - 17:30
17:30 - 18:30
18:30 - 19:30
19:30 - 20:30
20:30 - 21:30
21:30 - 22:30
的問題是,雖然從9第一次約會:30-12:30被封出,並沒有出現在可用插槽,後面的13:30-2:00約會沒有被阻止,因此在時隙輸出中顯示爲可用。 (見「13:30 - 14:30」)。
我是一個Python新手,並承認我沒有完全理解它就回收了代碼。有人能指出我要改變什麼來使它適當地阻止約會不到一小時?
TIA,
克里斯