__author__ = 'zhouhai'
#输入某年某月某日,判断这一天是这一年的第几天?
#判断是否是闰年
def is_leap_year(year):
if year%100 != 0 and year%4 == 0:
return True
if year%400 == 0:
return True
return False
#判断输入的日期是否合理?只有大月才有31天
def is_day_ok(year,month,day):
big_month = [1,3,5,7,8,10,12]
small_month = [4,6,9,11]
february = [2]
if day == 31 and month in big_month :
return True
elif day ==30 and month in small_month :
return True
elif day == 29 :
if month in february and is_leap_year(year)==False:
return False
else:
return True
elif day < 29 :
return True
else:
print("#########")
return False
if __name__ =='__main__':
date = input("请输入日期,格式如下:20170911")
year = date[0:4]
month = date[4:6]
day = date[6:8]
while date.isdigit() != True or len(date) != 8 or int(month)==0 or int(month)>12 or int(day)==0 or int(day)> 31 or is_day_ok(int(year),int(month),int(day))==False:
date = input("输入日期有误,格式如下:20170911")
year = date[0:4]
month = date[4:6]
day = date[6:8]
print("输入的日期是%s"%(date))
big_month = [1,3,5,7,8,10,12]
small_month = [4,6,9,11]
month_int = int(month)
days = 0
#开始算天数
for i in range(1,month_int):
if i in big_month:
days = days + 31
elif i in small_month:
days = days + 30
elif is_leap_year(int(year)):
days = days + 29
else:
days = days + 28
days = days + int(day)
#输入某年某月某日,判断这一天是这一年的第几天?
#判断是否是闰年
def is_leap_year(year):
if year%100 != 0 and year%4 == 0:
return True
if year%400 == 0:
return True
return False
#判断输入的日期是否合理?只有大月才有31天
def is_day_ok(year,month,day):
big_month = [1,3,5,7,8,10,12]
small_month = [4,6,9,11]
february = [2]
if day == 31 and month in big_month :
return True
elif day ==30 and month in small_month :
return True
elif day == 29 :
if month in february and is_leap_year(year)==False:
return False
else:
return True
elif day < 29 :
return True
else:
print("#########")
return False
if __name__ =='__main__':
date = input("请输入日期,格式如下:20170911")
year = date[0:4]
month = date[4:6]
day = date[6:8]
while date.isdigit() != True or len(date) != 8 or int(month)==0 or int(month)>12 or int(day)==0 or int(day)> 31 or is_day_ok(int(year),int(month),int(day))==False:
date = input("输入日期有误,格式如下:20170911")
year = date[0:4]
month = date[4:6]
day = date[6:8]
print("输入的日期是%s"%(date))
big_month = [1,3,5,7,8,10,12]
small_month = [4,6,9,11]
month_int = int(month)
days = 0
#开始算天数
for i in range(1,month_int):
if i in big_month:
days = days + 31
elif i in small_month:
days = days + 30
elif is_leap_year(int(year)):
days = days + 29
else:
days = days + 28
days = days + int(day)
print("这个是一年中的第%d天"%(days))
总结:
这个程序并不难;
麻烦的在于不仅要计算天数,还要先判断用户的输入是否合法;比如输入的2月30日;或者输入的是2月29日,但是又不是闰年;或者输入4月31日,4月是没有31日的。