# 第6期-日期查询
Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。
# 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("输入的月份错误")
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
第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}天")
2
3
4
5
6
7
8
9
10
11
12
13
第1行: 简要描述日期查询的问题
第3-5行: input函数请用户输入年、月、日,int函数将输入的字符串转化为整型
第7行: 导入datetime模块,datetime是python操作日期和时间的内置模块
第9行: 创建变量date1,使用datetime模块中名为date的类,指定参数为用户输入的年月日
第10行: 创建变量date2,指定参数为用户输入的上一年的最后一天
第11行: 将date1、 date2两个日期相减,(date1 - date2).days返回相差天数
第13行: 用print函数打印输出这是这一年的第多少天
# 4 视频解析
高清视频讲解,请查看AI大学堂Python基础实战100例 (opens new window)
关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码