Python中的编程经典案例【考题】判断日期是该年中的第几天

本文和你一起探索Python编程经典案例,让你沉浸式学习Python。你可以拿着题目先思考,然后再对照本文解题方法进行比较。有不同的见解欢迎到公众号中跟我一起探讨。

一、经典案例【考题】

  
问题:
  
输入日期,判断这一天是这一年的第几天?
  
输入:
  
20220809
  
输出:
221

  
  

二、经典案例解题方法

  

1 方法一:通过计算这一天和该年1月1日之间的时间差求天数

  
上述案例第一种解题思路为:
  
step1:截取输入时间的年份,拼凑出该年的1月1日作为参照日期。
  
step2:把输入日期和参照日期做差求出间隔天数,间隔天数加1即可求出这一天是这一年的第几天。
  
具体代码如下:

from datetime import date

raw_date = input('请按yyyymmdd方式输入年月日')
def y_days1(raw_date):
    date1 = date(int(raw_date[0:4]), 1, 1)
    date2 = date(int(raw_date[0:4]), int(raw_date[4:6]), int(raw_date[6:8]))
    return (date2 - date1).days + 1
y_days1(raw_date)

input(‘请按yyyymmdd方式输入年月日’):手动输入日期。
  
raw_date[0:4]:截取字符串第1位到第4位。
  
若手动输入日期为20220105,得到结果:

5

可以手动验证结果是对的。该方法的优点是逻辑简单,理解起来比较清晰。
  
  

2 方法二:通过合计每个月的天数获取

  
上述案例第二种解题思路为:
  
step1:调用calendar库应用for循环,获取输入日期在该年份中小于当月每个月份的天数,并加总。
  
step2:获取该日期当月的天数,并和之前的天数加总,求出这一天是这一年的第几天。
  
具体代码如下:

import calendar

raw_date = input('请按yyyymmdd方式输入年月日')
def y_days2(raw_date):
    all_days = 0
    for i in range(1, int(raw_date[4:6])):
        all_days += calendar.monthrange(int(raw_date[0:4]), i)[1]
    all_days += int(raw_date[6:8])
    print(all_days)
    return all_days
y_days2(raw_date)

若手动日期为20220108,得到结果:

8

可以手动验证结果是对的,感兴趣的朋友也可以把代码复制到Python中去,输入别的日期进行验证。
  
至此,Python中的编程经典案例【考题】判断日期是该年中的第几天已讲解完毕。如想了解更多Python中的函数,可以翻看公众号中“学习Python”模块相关文章。
  
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
用Python绘制520永恒心动
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
【Python】情人节表白烟花(带声音和文字)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿黎逸阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值