用函数实现,输入某年某月某日,判断这一天是这一年的第几天(闰年考虑在内)
第一种:
list=[31,60,91,121,152,182,213,244,274,305,335,366]
def date(year,mouth,day):
'''
:param year:#输入年份
:param mouth:#输入月份
:param day:#输入日期
:return:
'''
if 0<mouth<13 and 0<day<32:
if mouth == 1:
days = day
print(days)
#2月份时,分闰年和平年讨论并且限制日数
if mouth==2:
if day<30:
if year % 4 == 0 or year % 100 != 0 and year % 400 == 0:
print('日期存在')
print('闰年')
days = list[mouth - 2] + day
print(days)
else:
if day==29:
print('日期错误')
if day<=28:
print('日期存在')
print('平年')
days = list[mouth - 2] + day
print(days)
else:
print('日期错误')
#当月份超过三月份时,也分润年和平年讨论,但平年日数要减1。
if mouth>=3:
if year % 4 == 0 or year % 100 != 0 and year % 400 == 0:
print('日期存在')
print('闰年')
days = list[mouth - 2] + day
print(days)
else:
print('日期存在')
print('平年')
days = list[mouth - 2] + day-1
print(days)
else:
print('日期输入错误')
#date(2000,2,29)
date(2001,2,28)
第二种
def year(y):
'''
定义判断2月份天数的函数
:param y: 输入的年份
:return: 2月的天数
'''
if (y%4 == 0 and y%100 != 0) or (y%400 == 0):
return 29
else:
return 28
def daynum(day):
'''
定义判断输入的某一天是这一年的第几天
:param day:输入的年月日字符串
:return:返回的是输入的某一天是这一年的第几天
'''
try:
list_day = day.split('.') #对输入的字符串进行切片并生成列表
y = int(list_day[0]) #将列表内元素的字符串类型转成数字类型
m = int(list_day[1])
d = int(list_day[2])
mouth2 = year(y)
list_mouth = [31,mouth2,31,30,31,30,31,31,30,31,30,31]
# 判断输入的2月份的 月和日 是否符合要求 如果符合就返回天数
if m == 2 and (0 <d<= mouth2):
day_num = sum(list_mouth[:(m - 1)]) + d
return day_num
# 判断有31天的月份 输入的日期是否符合要求 如果符合就返回天数
elif (m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or m==12) and (0 <d <= 31):
day_num = sum(list_mouth[:(m - 1)]) + d
return day_num
# 判断有30天的月份 输入的日期是否符合要求 如果符合就返回天数
elif (m==4 or m==6 or m==9 or m==11) and (0 <d <= 30):
day_num = sum(list_mouth[:(m - 1)]) + d
return day_num
else:
return '请输入正确的日期'
except:
return '请输入正确的格式'
# 调用函数
day1 = input('请输入年月日如1999.1.1:')
number = daynum(day1)
print(number)
---------------------
作者:锲启
来源:CSDN
原文:https://blog.csdn.net/weixin_44166997/article/details/88316766
版权声明:本文为博主原创文章,转载请附上博文链接!