【教学类-48-03】202402011“闰年”(每4年一次 2月有29日)世纪年必须整除400才是闰年)

2000-2099年之间的闰年有25次,

343f3b9223fb413a88da1569edc56f8a.png

背景需求:

已经制作了对称年月的数字提取,和年月日相等的年份提取

【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)-CSDN博客文章浏览阅读84次。【教学类-48-01】20240205对称的“年”和“月日”(如2030 0302)https://blog.csdn.net/reasonsummer/article/details/136062477https://blog.csdn.net/reasonsummer/article/details/136062477

【教学类-48-02】20240207“年”和“月”和“日”相等(如2012 1212)-CSDN博客文章浏览阅读834次,点赞25次,收藏22次。【教学类-48-02】20240207“年”和“月”和“日”相等(如2012 1212)https://blog.csdn.net/reasonsummer/article/details/136064823?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22136064823%22%2C%22source%22%3A%22reasonsummer%22%7D

修改代码,提取所有闰年(有2月29日的年,就是闰年)——今年龙年2024年就有2月29日。

 

参考代码

python 获取指定范围所有日期_python获取一段时间的所有日期对象-CSDN博客文章浏览阅读680次。python 获取指定范围所有日期方法有很多,这不是唯一的答案。可以根据自己的需要进行修改,代码如下:import datetimedef gen_dates(b_date, days): day = datetime.timedelta(days=1) for i in range(days): yield b_date + day * idef get_date_list(start=None, end=None): if start is Non_python获取一段时间的所有日期对象https://blog.csdn.net/love_521_/article/details/113983984?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-4-113983984-blog-110731910.235%5Ev43%5Epc_blog_bottom_relevance_base6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-4-113983984-blog-110731910.235%5Ev43%5Epc_blog_bottom_relevance_base6&utm_relevant_index=9https://blog.csdn.net/love_521_/article/details/113983984?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-4-113983984-blog-110731910.235%5Ev43%5Epc_blog_bottom_relevance_base6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-4-113983984-blog-110731910.235%5Ev43%5Epc_blog_bottom_relevance_base6&utm_relevant_index=9

重点说明:

3e325cd98729442fa9be3257ca7c66f5.png

 

代码展示

'''
2900-2100年之间提取闰年
作者:阿夏
日期:2024年2月11日
'''# https://blog.csdn.net/love_521_/article/details/113983984?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-4-113983984-blog-110731910.235%5Ev43%5Epc_blog_bottom_relevance_base6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-4-113983984-blog-110731910.235%5Ev43%5Epc_blog_bottom_relevance_base6&utm_relevant_index=9
import datetimedef gen_dates(b_date, days):day = datetime.timedelta(days=1)for i in range(days):yield b_date + day * idef get_date_list(start=None, end=None):if start is None:start = datetime.datetime.strptime('20180202', '%Y%m%d')else:start = datetime.datetime.strptime(start, '%Y%m%d')if end is None:# end = datetime.datetime.now()end = datetime.datetime.strptime('20280202', '%Y%m%d')else:end = datetime.datetime.strptime(end, '%Y%m%d')data = []for d in gen_dates(start, (end -start).days):m = datetime.datetime.strftime(d, '%Y%m%d')data.append(m)  # 如果你想添加的为日期类型 m改为 d即可print(data, data.__len__(), sep='\n')t=[]# 遍历for x in range(len(data)):b=data[x][0:2]# 提取“年”前2个数字 20240229的20y=data[x][2:4]# 提取“年”后2个数字 20240229的24m=data[x][4:6]# 提取“月”2个数字  20240229的02d=data[x][6:8]# 提取“日”2个数字  20240229的29if m=='02'and d=='29': # 如果2月有29天a=b+y# 合并年月日print('符合闰年的年份',a,'年')t.append(a)print('符合闰年的年份有',len(t),'次')print('符合闰年的年份列表',t)# 起始日期
get_date_list(start='10000101', end='99991231')
# get_date_list(start='20000101', end='20991231')
# 40541# 符合闰年的年份 2000 年
# 符合闰年的年份 2004 年
# 符合闰年的年份 2008 年
# 符合闰年的年份 2012 年
# 符合闰年的年份 2016 年
# 符合闰年的年份 2020 年
# 符合闰年的年份 2024 年
# 符合闰年的年份 2028 年
# 符合闰年的年份 2032 年
# 符合闰年的年份 2036 年
# 符合闰年的年份 2040 年
# 符合闰年的年份 2044 年
# 符合闰年的年份 2048 年
# 符合闰年的年份 2052 年
# 符合闰年的年份 2056 年
# 符合闰年的年份 2060 年
# 符合闰年的年份 2064 年
# 符合闰年的年份 2068 年
# 符合闰年的年份 2072 年
# 符合闰年的年份 2076 年
# 符合闰年的年份 2080 年
# 符合闰年的年份 2084 年
# 符合闰年的年份 2088 年
# 符合闰年的年份 2092 年
# 符合闰年的年份 2096 年
# 符合闰年的年份有 25 次
# 符合闰年的年份列表 ['2000', '2004', '2008', '2012', '2016', '2020', '2024', '2028', '2032', '2036', '2040', '2044', '2048', '2052', '2056', '2060', '2064', '2068', '2072', '2076', '2080', '2084', '2088', '2092', '2096']

结果:

符合闰年的年份 2000 年
符合闰年的年份 2004 年
符合闰年的年份 2008 年
符合闰年的年份 2012 年
符合闰年的年份 2016 年
符合闰年的年份 2020 年
符合闰年的年份 2024 年
符合闰年的年份 2028 年
符合闰年的年份 2032 年
符合闰年的年份 2036 年
符合闰年的年份 2040 年
符合闰年的年份 2044 年
符合闰年的年份 2048 年
符合闰年的年份 2052 年
符合闰年的年份 2056 年
符合闰年的年份 2060 年
符合闰年的年份 2064 年
符合闰年的年份 2068 年
符合闰年的年份 2072 年
符合闰年的年份 2076 年
符合闰年的年份 2080 年
符合闰年的年份 2084 年
符合闰年的年份 2088 年
符合闰年的年份 2092 年
符合闰年的年份 2096 年
符合闰年的年份有 25 次

 

根据以上数字判断:

1、100年里有25次闰年?

根据以上数字判断:从00开始反复加4年,直到96,(最大数字是99)一共25次。

00、04、08、12……92,96

那么公元1000年到公元9999年的“闰年”日期可能的数量

(9999-1000+1)*25/100=2250年(一百年里25次闰年)

2、并非所有的XX00年都是闰年

可是结果不是2250,而是2182,少了68年

6602b639f0dd43c8b5c3bd3c8adcd09c.png

查询网络才知道

d1e876448b92478e97552584a6156886.png

ab776624bccb430e9bcc4016797cb1e2.png

也就是说:跨世纪的“XX00年”必须能被400整除才算闰年。下图显示1000 年/400=2.5、3000年/400=7.5不是闰年(红色表示缺失),但2000年/400=5可以整除,就是闰年(绿色)

fcf3a3e2193644e7a441801a5ad722b1.png

 

 

因此我有写了一个年份代码,测试68次缺少的分别是那些“世纪年”

'''
2900-2100年之间提取闰年,世纪年XX00不是闰年
作者:阿夏
日期:2024年2月11日
'''
start=1000
end=9999# 遍历所有年份
t=[]
for y in range(start,end+1):t.append(str(y))
# print(t)oy=[]# 平年
ly=[]# 闰年
for x in t:if x[2:4]=='00': # # print(x)num=int(x)/400if num==int(num):num=int(num)ly.append(x)# print(num)# print('闰年')else:num=float(num)# print(num)# print('非闰年')oy.append(x)else:passprint('不符合闰年的世纪年(平年)有',len(oy),'次')
print('不符合闰年的世纪年(平年)列表',oy)print('符合闰年的世纪年(闰年)有',len(ly),'次')
print('符合闰年的世纪年(闰年)列表',ly)

结果显示,公元1000-公元9999,一共是90个百年,一共有90次XX00年,其中22个世纪整年是闰年,可以被400整除,如1200、1600、2000年等,还有68个世纪整年是平年,如1000、4600、8100等。答案正确。

6adb475e8cdc48a49094b6b0965a56be.png

不符合闰年的世纪年(平年)有 68 次
不符合闰年的世纪年(平年)列表 ['1000', '1100', '1300', '1400', '1500', '1700', '1800', '1900', '2100', '2200', '2300', '2500', '2600', '2700', '2900', '3000', '3100', '3300', '3400', '3500', '3700', '3800', '3900', '4100', '4200', '4300', '4500', '4600', '4700', '4900', '5000', '5100', '5300', '5400', '5500', '5700', '5800', '5900', '6100', '6200', '6300', '6500', '6600', '6700', '6900', '7000', '7100', '7300', '7400', '7500', '7700', '7800', '7900', '8100', '8200', '8300', '8500', '8600', '8700', '8900', '9000', '9100', '9300', '9400', '9500', '9700', '9800', '9900']
符合闰年的世纪年(闰年)有 22 次
符合闰年的世纪年(闰年)列表 ['1200', '1600', '2000', '2400', '2800', '3200', '3600', '4000', '4400', '4800', '5200', '5600', '6000', '6400', '6800', '7200', '7600', '8000', '8400', '8800', '9200', '9600']

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/679072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专业140+总分410+华南理工大学811信号与系统考研经验华工电子信息与通信,真题,大纲,参考书。

23考研已经落幕,我也成功的上岸华工,回首这一年多的历程,也是有一些经验想和大家分享一下。 首先说一下个人情况,本科211,初试成绩400分。专业课140。 整体时间安排 对于考研,很重要的一环就是时间安排&…

《动手学深度学习(PyTorch版)》笔记8.5

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

python基于flask的网上订餐系统769b9-django+vue

课题主要分为两大模块:即管理员模块和用户模块,主要功能包括个人中心、用户管理、菜品类型管理、菜品信息管理、留言反馈、在线交流、系统管理、订单管理等; 如果用户想要交换信息,他们需要满足双方交换信息的需要。由于时间有限…

使用C#快速创建一个非常实用的桌面应用程序

过节时和我年纪轻轻就一把年纪的弟弟张老二闲聊了许久,发现他对编程产生了一泡浓厚的兴趣,于是我就给他漏了一手C#,做了一个简单的适用于win-x64配置cpu的桌面应用程序。 步骤如下: 1.打开Visual Studio,点击新建项目&#xff0…

C#,泰波拿契数(Tribonacci Number)的算法与源代码

1 泰波拿契数(Tribonacci Number) 泰波拿契数(Tribonacci Number)是斐波那契的拓展。 泰波拿契数 (Tribonacci Number) 即把费波拿契数 (Fibonacci Number) 的概念推广至三个数。 2 计算结果 3 源程序 using System; namespace…

Linux笔记之Docker进行镜像备份与迁移

Linux笔记之Docker进行镜像备份与迁移 ——2024-02-11 code review! 文章目录 Linux笔记之Docker进行镜像备份与迁移1. 导出容器文件系统为 tar 归档文件2. 将 tar 归档文件导入为新的 Docker 镜像3. 运行新的 Docker 镜像并创建容器 1. 导出容器文件系统为 tar 归档文件 要导…

前端JavaScript篇之异步编程的实现方式?

目录 异步编程的实现方式?1. 回调函数2. Promise3. Async/Await4. Generator 异步编程的实现方式? 异步编程是处理需要等待的操作的一种方式,比如读取文件、发送网络请求或处理大量数据。在JavaScript中,有几种常见的实现方式&am…

《UE5_C++多人TPS完整教程》学习笔记1 ——《P2 关于本课程(About This Course)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P2 关于本课程(About This Course)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者&…

ubuntu中尝试安装ros2

首先,ubuntu打开后有个机器人栏目,打开后,有好多可选的,看了半天 ,好像是博客,算了,没啥关系,再看看其他菜单 这些都不是下载链接。先不管,考虑了一下,问了ai&#xff…

数据库恢复

文章目录 前言一、事务1.概念2.定义语句3.ACID特性 二、数据库恢复的必要性1.为什么要进行数据库恢复2.数据库恢复机制的作用 三、数据恢复使用的技术1.数据转储2.登记日志文件 四 、不同故障的数据恢复策略1.事务内部的故障2.系统故障3.介质故障 五、具有检查点的恢复技术1.检…

接口测试--apipost接口断言详解

在做接口测试的时候,会对接口进行断言,一个完整的接口测试,包括:请求->获取响应正文->断言。 一、apipost如何进行断言 apipost的断言设置实在后执行脚本中进行编写的。apipost本身提供了11中断言: apt.asser…

利用Python和pandas库进行股票技术分析:移动平均线和MACD指标

利用Python和pandas库进行股票技术分析:移动平均线和MACD指标 介绍准备工作数据准备计算移动平均线计算MACD指标结果展示完整代码演示 介绍 在股票市场中,技术分析是一种常用的方法,它通过对股票价格和交易量等历史数据的分析,来…

单片机学习笔记---蜂鸣器播放提示音音乐(天空之城)

目录 蜂鸣器播放提示音 蜂鸣器播放音乐(天空之城) 准备工作 主程序 中断函数 上一节讲了蜂鸣器驱动原理和乐理基础知识,这一节开始代码演示! 蜂鸣器播放提示音 先创建工程:蜂鸣器播放提示音 把我们之前模块化的…

【机器学习】数据清洗之识别异常点

🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步…

Modern C++ 内存篇2 - 关于relocation的思考

在上一节《Modern C 内存篇1 - std::allocator VS pmr-CSDN博客》我们详细讨论了关于如何判断用不用memmove优化的代码,结论可以总结为: 只有_Tp是trivial 且 用std::allocator 才会调用memmove。 所有case如下表格所示: No_Tpallocator typ…

渗透专用虚拟机(公开版)

0x01 工具介绍 okfafu渗透虚拟机公开版。解压密码:Mrl64Miku,压缩包大小:15.5G,解压后大小:16.5G。安装的软件已分类并在桌面中体现,也可以使用everything进行查找。包含一些常用的渗透工具以及一些基本工…

C语言rand随机数知识解析和猜数字小游戏

rand随机数 rand C语言中提供了一个可以随机生成一个随机数的函数&#xff1a;rand&#xff08;&#xff09; 函数原型&#xff1a; int rand(void);rand函数返回的值的区间是&#xff1a;0~RAND_MAX(32767)之间。大部分编译器都是32767。 #include<stdlib.h> int ma…

VTK 三维场景的基本要素(相机) vtkCamera

观众的眼睛好比三维渲染场景中的相机&#xff0c;在VTK中用vtkCamera类来表示。vtkCamera负责把三维场景投影到二维平面&#xff0c;如屏幕&#xff0c;相机投影示意图如下图所示。 1.与相机投影相关的要素主要有如下几个&#xff1a; 1&#xff09;相机位置: 相机所处的位置…

EMC学习笔记(二十四)降低EMI的PCB设计指南(四)

降低EMI的PCB设计指南&#xff08;四&#xff09; 1.电路板分区2.信号走线2.1 电容和电感串扰2.2 天线2.3 端接和传输线2.4输入端的阻抗匹配 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 1.电路板分区 电路板分区与电路板平面规划具有相同的基本含义&#x…

Java常用类与基础API--String的实例化与连接操作

文章目录 一、String实例化的两种方式&#xff08;1&#xff09;两种方式&#xff08;2&#xff09;举例1、案例12、案例2 &#xff08;3&#xff09;内存分配&#xff08;4&#xff09;面试题1、题12、题2 二、String的连接操作&#xff08;1&#xff09;案例1、案例剖析2、in…