创建一个字典,其键是月份名称,值是否。相应月份的天数。 #程序栈

Create a dictionary whose keys are month names and values are no. of days in the corresponding month. #program stack

请更正代码。 创建一个字典,其键是月份名称,值是否。相应月份的天数。 WAP 具有单独的用户定义功能来实现以下操作。 (i) 仅将那些名称压入堆栈,其编号为天数是 31。 (ii) 弹出并显示堆栈的内容。

请更正代码 代码:https://docs.google.com/document/d/1fj3eaa2zXIkwhE6W4apLjmva44hxi51C/edit

这可能就是您想要的

编辑:编辑代码以满足新要求。

(我不明白你所说的 'stack' 是什么意思,但你可以从这里继续)

def create_month_day_dict(year, long_only=False):
    months_names = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October',
                    'November', 'December']
    days_in_month = [31, 28 + (year % 4 == 0), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

    return dict((k, v) for k, v in zip(months_names, days_in_month) if not long_only or v == 31)


print(create_month_day_dict(2022, long_only=True))
print(create_month_day_dict(2024))

输出:

{'January': 31, 'March': 31, 'May': 31, 'July': 31, 'August': 31, 'October': 31, 'December': 31}

{'January': 31, 'February': 29, 'March': 31, 'April': 30, 'May': 31, 'June': 30, 'July': 31, 'August': 31, 'September': 30, 'October': 31, 'November': 30, 'December': 31}

注:也考虑了相关年份

你在构建字典时需要考虑年份来帮助解决这个问题。 calendar 模块非常适合这个:

from calendar import monthrange, month_abbr

def make_dictionary(year):
    d = {'year': year}
    for i in range(1, 13):
        d[month_abbr[i]] = monthrange(year, i)[1]
    return d
    
print(make_dictionary(2024))

输出:

{'year': 2024, 'Jan': 31, 'Feb': 29, 'Mar': 31, 'Apr': 30, 'May': 31, 'Jun': 30, 'Jul': 31, 'Aug': 31, 'Sep': 30, 'Oct': 31, 'Nov': 30, 'Dec': 31}

如果您想要完整的(而不是缩写的)月份名称,请导入 month_name 并使用