蓝桥杯练习——闰年判断

目录

一、题目

二、示例

三、实现方法

1.整除定义法

2.calendar模块

3.datetime模块

四、总结


一、题目

给定一个年份,判断这一年是否是闰年,如果是则输出yes,否则输出no。

输入格式

输入一个正整数 y,表示年份。

输出格式

输出一行。如果输入的年份是闰年则输出 yes,否则输出 no。

说明

当题目指定输出一个字符串作为结果,如本题的yes或者no,需要严格按照题目中给定的大小写,写错大小写将不得分。


闰年的定义:

1、若一个年份能被4整除,并且不能被100整除,根据闰年的规定,该年份是普通闰年。例如,2008年和2012年均能被4整除,并且不能被100整除,因此这两年都是普通闰年。

2、若一个年份能被400整除,无论其是否同时被4和100整除,它都是世纪闰年。例如,2000年是世纪闰年,因为它能被400整除。

因此,计算某一年是否为闰年,就可以直接根据这两种方法来判断。需要注意的是,能被100整除但不能被400整除的年份并不是闰年,比如1900年就不是闰年。


二、示例

输入示例1

1900

输出示例1

no

输入示例2

2016

输出示例2

yes


三、实现方法

1.整除定义法

 直接根据题目中闰年的两种定义方法来判断,普通闰年、世纪闰年满足一个即为闰年

代码

year = int(input())   # 输入一个年份

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print('yes')
else:
    print('no')

2.calendar模块

语法

calendar.isleap(year)

python 的 calendar 模块提供了直接判断闰年的方法:其中的isleap()方法直接返回是否是闰年(True/False)

代码

import calendar

year = int(input())
if calendar.isleap(year):
    print("yes")
else:
    print("no")

3.datetime模块

思路

通过检查2月的最后一天是不是29日来确定闰年。

计算2月的最后一天:先定位到这一年的3月1日,减去一天,得到2月的最后一天。

判断闰年:2月的最后一天为29号则为闰年,否则不是闰年。

语法

datetime 是pyhton的内置库,用于处理日期(date)、时间(time)、时间间隔(timedetla)和时区(timezone)

datetime.date(year,month,day)   

根据年、月、日创建日期 。

datetime.timedelta(days,seconds,microseconds,milliseconds,minutes,hours,weeks) 

可灵活定义时间差 ,主要用于做日期/时间加减运算。

代码

import datetime  # 导入 python 的 datetime库

# 计算2月的最后一天
year =  int(input())
time_delta = datetime.timedelta(days = 1)  # 定义时间变化量
dt = datetime.date(year = year ,month = 3,day = 1)  # 表示输入年份的3月1号
res = dt - time_delta   # 3月1日 - 1 天,得到2月的最后一天

# 判断闰年
if res.day == 29:  # 如果这一年的2月有29天则为闰年
    print('yes')
else:
    print('no')

解释

 因为date对象不能直接和整数相减,因此要创建一个时间差对象timedelta,表示1天,用于从3月1日减去1天,不使用而直接写dt - 1会报错。


四、总结

直接使用闰年判断逻辑比较高效。

calendar.isleap()简单直接,适合大多数场景,优先选择。

datetime模块利用日期计算间接判断闰年,比直接数学计算稍慢,适合需要日期运算的复杂逻辑,不过也可以认识到其中的一些用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值