Python-生成包含某年12个月天数的字典

本文介绍如何使用Python生成一个字典,该字典包含了12个月份及其对应的天数,通过调用判断闰年的函数来确保准确性。

生成一个包含一年中12个月,每个月天数的字典,调用判断闰年的函数
思路:
1、先用推导字典生成一个含12个月的字典
2、依次判断每个月的天数,对字典values值进行赋值

def leap_year(year):    #判断是否闰年,输入参数可以是字符串的年份或数字的年份
    print('您输入的年份是:',year) #打印输入
    if isinstance(year,int) and year>0:  # 判断是大于0的整数
        if (year%4 == 0 and year%100!=0) or year%400 == 0:
            print('您输入的年份是闰年!')#可注释
            return True  
        else:
            print('您输入的年份不是闰年!') #可注释
            return False
    elif isinstance(year,str):
        if year.isdigit():
            if int(year)>0 and ((int(year)%4 == 0 and int(year)%100!=0) or int(year)%400 == 0):
                print('您输入的年份是闰年!')#可注释
                return True  
            elif int(year)>0:
                print('您输入的年份不是闰年!')#可注释
                return False
        else: 
            print( '输入参数错误')#
            return False
    else:
        print( '输入参数错误')
        return False          

def month_days(year):
    month_day_dict={k:0 for k in range(1,13)} #生成每个月天数的
<think>我们参考引用[1]中的代码,它提供了一个函数`leap_year(year)`来判断闰年,以及一个函数`month_days(year)`来生成包含某年12天数字典。 用户的需求是:提示用户输入1-12之间的整数表示份,并显示该份的天数。 因此,我们可以: 1. 提示用户输入一个年份(因为不同年份2天数不同) 2. 提示用户输入一个1-12的整数份 3. 根据输入年份生成该年每个天数字典 4. 从字典中获取对应份的天数输出 注意:我们需要确保输入份在1-12之间,否则给出提示。 根据引用[1]中的代码,我们可以复用`leap_year`和`month_days`函数。但是,引用[1]中的函数包含了很多打印语句,这些打印语句可能会干扰我们的输出。我们可以选择保留或者去掉这些打印语句。为了简洁,我们可以去掉这些打印语句,只保留判断逻辑。 另外,引用[2]中提到了如何从用户输入中获取年日,我们可以参考其输入方式。 让我们重新整理一下代码: 步骤: 1. 定义判断闰年的函数(简化打印,只返回布尔值) 2. 定义生成天数字典的函数 3. 主程序部分: a. 获取用户输入年份(转换为整数) b. 循环提示用户输入份,直到输入正确(1-12的整数) c. 调用函数生成该年的天数字典 d. 输出份的天数 注意:我们也可以将份名称映射为数字,但这里直接使用数字作为键。 下面我们编写代码: </think>以下是根据需求实现的Python代码,使用字典实现输入天数显示: ```python def is_leap_year(year): """判断是否为闰年""" if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): return True return False def get_month_days(year): """生成包含12天数字典""" month_days = { 1: 31, 2: 29 if is_leap_year(year) else 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31 } return month_days # 主程序 try: year = int(input("请输入年份(例如2023):")) month = int(input("请输入份(1-12):")) if month < 1 or month > 12: raise ValueError("份必须在1-12之间") days_dict = get_month_days(year) print(f"{year}年{month}天数是:{days_dict[month]}天") except ValueError as e: print(f"输入错误: {e}") ``` ### 代码说明: 1. **字典实现原理**: - 使用`{key: value}`结构存储份与天数的映射关系 - 闰年判断:2天数根据`is_leap_year()`函数动态计算(闰年29天,平年28天) - 其他天数固定存储在字典中 2. **使用示例**: ``` 请输入年份(例如2023):2024 请输入份(1-12):2 2024年2天数是:29天 ``` 3. **错误处理**: - 自动检测非整数输入 - 验证份范围(1-12- 异常捕获防止程序崩溃 ### 相关知识点: 1. 字典的键值对映射是Python中高效的数据查找方式,时间复杂度为$O(1)$[^1] 2. 闰年判断遵循格里高利历规则:能被4整除但不能被100整除,或能被400整除[^2] 3. 使用异常处理(try-except)增强程序鲁棒性[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值