1 问题描述
输入某年某月某日,判断这个日期是这一年的第多少天
如:输入“2020 3 5”后,可以显示“这是这一年的第65天”
2 解题思路
以3月5日为例,应该先把前两个月的日期加起来,然后再加上5天即本年的第几天
需考虑特殊情况:闰年且输入月份大于2时需多加一天
3 解题方法
方法一
print("请输入年月日,判断这个日期是这一年的第多少天") year = int(input("请输入年份:")) month = int(input("请输入月份:")) day = int(input("请输入日期:")) months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334] if 1 <= month <= 12: sum = months[month - 1] sum += day leap = 0 if year % 4 == 0 and year % 100 !=0 or year % 400 == 0: leap = 1 days = [31, 28 + leap, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] if day > days[month -1]: print("输入的日期错误") else: if month > 2 and leap == 1: sum += 1 print(f"这是这一年的第 {sum} 天") else: print("输入的月份错误")View Code
第1行: 简要描述日期查询的问题
第3-5行: input函数请用户输入年、月、日,int函数将输入的字符串转化为整型
第7行: 创建列表months,列表中的元素为上个月月底是今年的第几天(二月按平年算)
第9-11行: 用if...else语句判断输入的月份是否正确,如果不正确,则转到第27行;如果正确,则通过列表的索引获取上个月之前所有的天数,再加上这个月的天数,就可得到这个日期是这一年的第多少天
第13行: 创建变量leap,赋值为0
第14行: 用if语句判断平闰年,若这一年是闰年,leap赋值为1
第17行: 创建列表days,列表中的元素为每个月的天数
第18-23行: 用if...else语句判断输入的日期是否正确,如果不正确,则打印"输入的日期错误",否则转到第21行,若为闰年且输入月份大于2,总天数多加一天
第25行: 用f-string的方法格式化字符串,print函数打印输出这是这一年的第多少天
第3期-判断闰年 (opens new window)有讲解如何判断闰年,忘记了的而小伙伴可以查看哦~
方法二
print("请输入年月日,判断这个日期是这一年的第多少天") year = int(input("请输入年份:")) month = int(input("请输入月份:")) day = int(input("请输入日期:")) import datetime date1 = datetime.date(year, month, day) date2 = datetime.date(year-1, 12, 31) timedelta= (date1 - date2).days print(f"这是这一年的第{timedelta}天")View Code
第1行: 简要描述日期查询的问题
第3-5行: input函数请用户输入年、月、日,int函数将输入的字符串转化为整型
第7行: 导入datetime模块,datetime是python操作日期和时间的内置模块
第9行: 创建变量date1,使用datetime模块中名为date的类,指定参数为用户输入的年月日
第10行: 创建变量date2,指定参数为用户输入的上一年的最后一天
第11行: 将date1、 date2两个日期相减,(date1 - date2).days返回相差天数
第13行: 用print函数打印输出这是这一年的第多少天