【蓝桥杯速成】日期问题(填空题) + 真题讲解 python

tsx81428  论坛元老 | 2025-4-6 18:59:08 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1804|帖子 1804|积分 5414

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
众所周知,蓝桥杯有两道填空题,还特别喜欢考日期问题
什么?你还在使用计算器手算?
那你将会思量闰年、大小月等等细节到头昏眼花
最后还比答案大或小1
寄!
接下来我来告诉你正确的做法

根本知识

python自带datetime库帮你办理所有问题
  1. from datetime import date, timedelta  
  2.   
  3. t1 = date(2025, 3, 30)  
  4. t2 = date(2025, 3, 31)  
  5. print(t2 - t1)  # 1 day, 0:00:00  
  6. print((t2 - t1).days)  # 1  
  7.   
  8. dt = timedelta(1)  
  9. print(t1 + dt)  # 2025-03-31  
  10.   
  11. print(t1.weekday()) # 0-6对应周一到周日
复制代码
注意:python的datetime模块支持的日期范围是0001-01-01到9999-12-31

话不多说,直接上三道真题

实战演练


2018 蓝桥杯省赛
  1. from datetime import date, timedelta
  2. t1 = date(2000, 1, 1)
  3. t2 = date(2000, 5, 4)
  4. print((t2 - t1).days + 1)
复制代码


2018 蓝桥杯省赛
  1. from datetime import date, timedelta
  2. t1 = date(1901, 1, 1)
  3. t2 = date(2000, 12, 31)
  4. dt = timedelta(1)
  5. ans = 0
  6. while t1 <= t2:
  7.     if t1.weekday() == 0:
  8.         ans += 1
  9.     t1 += dt
  10. print(ans)
复制代码


2020 蓝桥杯国赛
注意:python的datetime模块支持的日期范围是0001-01-01到9999-12-31
  1. from datetime import date, timedelta  
  2.   
  3. t1 = date(1900, 1, 1)  
  4. t2 = date(9999, 12, 31)  
  5. dt = timedelta(1)  
  6.   
  7. ans = 1  # 9999-12-31 符合条件
  8. while t1 < t2:  
  9.     res = str(t1.year) + str(t1.month) + str(t1.day)  
  10.     if '2' in res:  
  11.         ans += 1  
  12.     t1 += dt  
  13. print(ans)
复制代码


END
*如果有更多问题或需要进一步的资助,可以在评论区留言讨论哦!
如果喜欢的话,请给博主点个关注 谢

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表