本系列旨在通过一系列由浅入深的python实战代码或项目,使普通人也能感受到编程的乐趣,编程能够在平时的工作生活上有所帮助。欢迎查看系列的开篇词和前面文章。
概述
输入某年某月某日,判断这一天是该年的第几天。
要先判断输入的月份是否合规,月份要在1-12之间。其次要判断日期是否合规,大月有31天,小月有30天,2月根据闰年还是平年判断。
还要判断年份是否为闰年,如果是闰年切月份大于3时,要加上一天。
代码实现过程
代码中主要用到if else的判断,并相互嵌套,考虑的情况也比较多。对理解python条件判断有帮助。
- 先输入年月日,分别enter回车确认
year = int(input('年份:\n'))
month = int(input('月份:\n'))
day = int(input('日期:\n'))
- 按照平年来累计日期递增的天数
- 根据月份类型进行分别判断,并检验日期输入是否合规,再打印出是该年的第几天。
#先输入年月日,分别enter回车确认
year = int(input('年份:\n'))
month = int(input('月份:\n'))
day = int(input('日期:\n'))
#按照平年来累计日期递增的天数
months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)
if 0 <= month <= 12:
sum = months[month - 1]
else:
print('月份输入错误')
#根据是第几个月份,算出了前面月份的累计天数加上该月日期数
sum += day
leap = 0
# 大月 1 3 5 7 8 10 12,小月 4 6 9 11,闰月 2
#根据月份类型进行分别判断,并检验日期输入是否合规,再打印出是该年的第几天。
if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12:
if 0 <= day <= 31:
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
leap = 1
if (leap == 1) and (month > 2):
sum += 1
print('是今年的第 %d 天.' % sum)
else:
print("日期输入有误")
elif month == 4 or month == 6 or month == 9 or month == 11:
if 0 <= day <= 30:
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
leap = 1
if (leap == 1) and (month > 2):
sum += 1
print('是今年的第 %d 天.' % sum)
else:
print("日期输入有误")
elif month == 2:
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
leap = 1
if 0 <= day <= 29:
if (leap == 1) and (month > 2):
sum += 1
print('是今年的第 %d 天.' % sum)
else:
print("闰年2月日期不应大于29")
else:
if 0 <= day <= 28:
print('是今年的第 %d 天.' % sum)
else:
print("平年2月日期不应大于28")
else:
print('月份错误,无法计算')
测试结果:
年份:
2016
月份:
2
日期:
29
是今年的第 60 天.
日期输入不规范时则不计算
年份:
2016
月份:
2
日期:
30
闰年2月日期不应大于29
评论区