第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Python - 遍歷月份日期并打印自定義輸出

Python - 遍歷月份日期并打印自定義輸出

明月笑刀無(wú)情 2022-12-20 16:43:36
我目前不確定用于以下問題的邏輯以及編程的新手。(目前正在學(xué)習(xí) python)嘗試遍歷給定月份的每個(gè)日期 - 比如 05/01 - 05/31 并以下面的格式打印出來(lái)。周一到周五的日期要單獨(dú)打印。星期六和星期日的日期要單獨(dú)打印。如果這個(gè)月從星期五開始 - 05/01/2020,輸出應(yīng)該是 那個(gè)星期的最后一個(gè)工作日。對(duì)于 2020 年 4 月,產(chǎn)量將如下所示,因?yàn)?4 月的第一周從周三開始。我設(shè)法想出以下嘗試,但不確定如何進(jìn)一步進(jìn)行。import sysfrom datetime import date, datetime, timedeltayear = int(sys.argv[1])month = int(sys.argv[2])st_dt = int(sys.argv[3])en_dt = int(sys.argv[4])first_date = datetime(year, month, st_dt).date()get_first_day = datetime(year, month, st_dt).isoweekday()def daterange(startDate, endDate, delta=timedelta(days=1)):    currentDate = startDate    while currentDate <= endDate:        yield currentDate        currentDate += deltafor date in daterange(date(year, month, st_dt), date(year, month, en_dt), delta=timedelta(days=1)):     print(date)  date.py 2020 5 1 31 # script提出了一個(gè)獨(dú)立的“if 循環(huán)”,正如我之前所說,不確定如何構(gòu)建更大的圖景:(if get_first_day == 1:        #print("Monday")        sec_d =  first_date + timedelta(days=4)elif get_first_day == 2:        sec_d = first_date + timedelta(days=3)elif get_first_day == 3:        sec_d = first_date + timedelta(days=2)elif get_first_day == 4:        sec_d = first_date + timedelta(days=2)elif get_first_day == 5:        sec_d = first_date        #print("Friday")else:        passprint(f"Second date:{sec_d} ") -- which gave  -- > Second date:2020-05-01
查看完整描述

1 回答

?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

您可以將日期保存在字典中,字典鍵是日歷周和日期類型(周末、星期幾)的元組。


每一天都保存在allDays字典中,按周數(shù)和日期類型的組合作為鍵進(jìn)行分組:


 ('18', 'weekend'): [datetime.date(2020, 5, 2), datetime.date(2020, 5, 3)],

 ('18', 'working'): [datetime.date(2020, 5, 1)],

 ('19', 'weekend'): [datetime.date(2020, 5, 9), datetime.date(2020, 5, 10)],

 ('19', 'working'): [datetime.date(2020, 5, 4), ...

所以你只需要取出每個(gè) dict 項(xiàng)目的第一個(gè)和最后一個(gè)項(xiàng)目:


import sys

from datetime import date, datetime, timedelta


year, month, st_dt, en_dt = 2020, 5, 1, 31


first_date = datetime(year, month, st_dt).date()

get_first_day = datetime(year, month, st_dt).isoweekday()


def daterange(startDate, endDate, delta=timedelta(days=1)):

    currentDate = startDate

    while currentDate <= endDate:

        yield currentDate

        currentDate += delta


allDays = {}

_lastDayType = None

for dte in daterange(date(year, month, st_dt), date(year, month, en_dt), delta=timedelta(days=1)):

    if 0 <= dte.weekday() < 5:

        _dayType = 'working'

    else:

        _dayType = 'weekend'


    _weeknum = dte.strftime("%V")  # number of calendar week

    _key = (_weeknum, _dayType)

    if _key not in allDays:        # create an empty list if unique key doesnt exist

        allDays[_key] = []

    allDays[_key].append(dte)      # add the dates ...


for k,v in allDays.items():

    if len(v) == 1:

        first, last = v[0], v[0]

    else:

        first, last = v[0], v[-1]

    print("%s >> %s" % (first, last))

輸出:


2020-05-01 >> 2020-05-01

2020-05-02 >> 2020-05-03

2020-05-04 >> 2020-05-08

2020-05-09 >> 2020-05-10

2020-05-11 >> 2020-05-15

2020-05-16 >> 2020-05-17

2020-05-18 >> 2020-05-22

2020-05-23 >> 2020-05-24

2020-05-25 >> 2020-05-29

2020-05-30 >> 2020-05-31


查看完整回答
反對(duì) 回復(fù) 2022-12-20
  • 1 回答
  • 0 關(guān)注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)