题目描述
定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。
输入格式
年月日
输出格式
当年第几天
样例输入
2000 12 31
样例输出
366
代码演示一:
def p_y(m, d): # 平年
sum = 0
m_list = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
for i in range(m - 1):
sum += m_list[i]
sum += d
return sum
def r_y(m, d): # 闰年
sum = 0
m_list = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
for i in range(m - 1):
sum += m_list[i]
sum += d
return sum
def p_d(y): # 判断平年和闰年 平年True 闰年False
if ((y % 4 == 0) and (y % 100 != 0)) or (y % 400 == 0):
return False
else:
return True
y, m, d = map(int, input().split())
if p_d(y):
print(p_y(m, d))
else:
print(r_y(m, d))
代码一的思路:是,将闰年和平年都以函数的形式表现出来,闰年和平年的差距为二月,平年二月28天,闰年二月29天,将每一月的天数按顺序存入列表,然后将所求的时间里的月份减一所包含的月份的天数相加,最后再加上时间里的天数;还需要一个函数来判断是闰年还是平年。
代码演示二:
import datetime
y, m, d = map(int, input().split())
d1 = datetime.datetime(y, 1, 1) # 第一个日期
d2 = datetime.datetime(y, m, d) # 第二个日期
mm = d2 - d1 # 两日期差距
num = mm.days + 1 # 加1是代表这是第几天,不加1则代表相差几天
print(num)
代码二的思路:是,利用datetime库里面的函数,首先是获取日期,datetime.datetime(y,m,d)将输入的日期合理化,使其符合日期的规律,mm.days可以将日期换做天数
要注意本题求得是第几天,所以要把第一天带上即加1
闰年与平年:
平年和闰年的区别只在于全年的天数和二月的天数,阳历闰年有366天,二月29天;阳历平bai年365天,二月28天。平年是指阳历没有闰日或农历没有闰月的年份。公元年数可被4整除为闰年,但是整百(个位和十位均为0)的年数必须是可以被400整除的才是闰年,其他都是平年
闰年的判断方法:闰年分为普通闰年和世纪闰年。普通闰年能被4整除但不能被100整除的年份为普通闰年。世纪闰年能被400整除的为世纪闰年。