本文和你一起探索Python编程经典案例,让你沉浸式学习Python。
你可以拿着题目先思考,然后再对照本文解题方法进行比较。有不同的见解欢迎到公众号中跟我一起探讨。
经典案例【考题】
经典案例解题方法
2.1 通过计算这一天和该年1月1日之间的时间差求天数
2.2 通过合计每个月的天数获取

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

1 方法一:通过计算这一天和该年1月1日之间的时间差求天数
上述案例第一种解题思路为:
step1:截取输入时间的年份,拼凑出该年的1月1日作为参照日期。
step2:把输入日期和参照日期做差求出间隔天数,间隔天数加1即可求出这一天是这一年的第几天。
具体代码如下:
from datetime import dateraw_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 + 1y_days1(raw_date)
input('请按yyyymmdd方式输入年月日'):手动输入日期。
raw_date[0:4]:截取字符串第1位到第4位。
若手动输入日期为20220105,得到结果:
5可以手动验证结果是对的。该方法的优点是逻辑简单,理解起来比较清晰。
2 方法二:通过合计每个月的天数获取
上述案例第二种解题思路为:
step1:调用calendar库应用for循环,获取输入日期在该年份中小于当月每个月份的天数,并加总。
step2:获取该日期当月的天数,并和之前的天数加总,求出这一天是这一年的第几天。
具体代码如下:
import calendarraw_date = input('请按yyyymmdd方式输入年月日')def y_days2(raw_date):all_days = 0for 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_daysy_days2(raw_date)
若手动日期为20220108,得到结果:
8可以手动验证结果是对的,感兴趣的朋友也可以把代码复制到Python中去,输入别的日期进行验证。
至此,Python中的编程经典案例【考题】判断日期是该年中的第几天已讲解完毕。


扫一扫关注我
13162366985
投稿微信号、手机号