【问题标题】:list containing first weekday of every month in numbers 0-6 using the calendar module使用日历模块以数字 0-6 包含每个月的第一个工作日的列表
【发布时间】:2020-08-28 16:08:31
【问题描述】:

目前正在尝试获取从星期一为 0 到星期日为 6 的每个月的第一个星期日的列表。打印结果应如下所示,例如 2020 年 [2, 5, 4, 0, 2, 5, 1, 3, 6, 1]

在输入 2020 年和 1 月的第一个工作日“星期三”后使用当前脚本,我得到

TypeError: %:'NoneType'and'int' 的操作数类型不受支持

这是我当前的脚本,非常感谢任何见解或帮助!

import calendar


yr_input = input("Today's year: ")
yr= int(yr_input)


first_week_day_input = input('Enter the first week day of January: ')

def jan_1st_wd(x):
    
    if first_week_day_input.lower() == 'monday':
        fst_wd = 0
    elif first_week_day_input.lower() == 'tuesday':
        fst_wd = 1
    elif first_week_day_input.lower()== 'wednesday':
        fst_wd = 2
    elif first_week_day_input.lower() == 'thursday':
        fst_wd = 3
    elif first_week_day_input.lower() == 'friday':
        fst_wd = 4
    elif first_week_day_input.lower() == 'saturday':
        fst_wd = 5
    elif first_week_day_input.lower() == 'sunday':
        fst_wd = 6
    
        return fst_wd

fst_wd = jan_1st_wd(first_week_day_input)   

wd_list=[]

cal = calendar.Calendar(firstweekday=fst_wd)

y=1

yr= int(yr_input)


def first_wdL(yr , jan = 1):
    
    
    y=1

    while y < 13:

        for x in cal.itermonthdays2(yr, jan):
            if x[0] == 1:
                wd_list.append(x[1])
                continue
        jan+=1      
        y += 1  
        
wd_list = first_wdL(yr) 

print(wd_list)

【问题讨论】:

    标签: python module calendar


    【解决方案1】:

    你把事情复杂化了。将datetime() 与循环一起使用:

    from datetime import datetime
    year = 2020
    week = 1
    
    result = []
    for i in range(1,12):
        result.append(datetime(year, i, week).weekday())
    print(result)
    

    输出:

    [2, 5, 6, 2, 4, 0, 2, 5, 1, 3, 6]
    

    编辑

    单行:

    print([datetime(year, i, week).weekday() for i in range(1,12)])
    

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      • 2013-09-22
      • 2021-09-02
      • 1970-01-01
      相关资源
      最近更新 更多