import datetime
def create_shift_schedule(start_date, names, filename, end_date):
current_date = datetime.datetime.strptime(start_date, "%Y-%m-%d")
end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d")
schedule = []
# Start with "程" for the first day
schedule.append(f"{current_date.strftime('%Y-%m-%d')}: {names[0]}")
current_date += datetime.timedelta(days=1)
names_len = len(names)
shift_index = 1 # Start from the second person "式"
while current_date <= end_date:
for _ in range(3): # 每人連續輪值三天
if current_date > end_date:
break
schedule.append(f"{current_date.strftime('%Y-%m-%d')}: {names[shift_index]}")
current_date += datetime.timedelta(days=1)
shift_index = (shift_index + 1) % names_len
with open(filename, 'w', encoding='utf-8') as f:
for entry in schedule:
f.write(entry + '\n')
create_shift_schedule("2025-01-01", ["程", "式", "大", "挑", "戰"], "shift_schedule.txt", "2025-12-31")
print("排班表已完成並保存至 shift_schedule.txt 文件。")
1 Like
感謝共襄盛舉參與本活動
可能是題目說明的不夠清楚,這裡有半成品範例(txt 檔,會從這裡複製貼上到 xls 檔中)供您參考:
▌2025年1月
日 一 二 三 四 五 六
1 2 3 4
程 式 式 式
5 6 7 8 9 10 11
大 大 大 挑 挑 挑 戰
12 13 14 15 16 17 18
戰 戰 程 程 程 式 式
19 20 21 22 23 24 25
式 大 大 大 挑 挑 挑
26 27 28 29 30 31
戰 戰 戰 程 程 程
▌2025年2月
日 一 二 三 四 五 六
1
式
2 3 4 5 6 7 8
式 式 大 大 大 挑 挑
9 10 11 12 13 14 15
挑 戰 戰 戰 程 程 程
16 17 18 19 20 21 22
式 式 式 大 大 大 挑
23 24 25 26 27 28
挑 挑 戰 戰 戰 程