用函数实现输入某年某月某日,判断这一天是这一年的第几天?闰年情况也考虑进去
(函数用的很少,代码冗余较高,只是练习了一下思路,后续仍需优化)
'''
while True:
n = input("请输入年份:")
n = int(n)
if n % 400 == 0 :
print("判断为闰年")
elif n % 4 == 0 and n % 100 != 0:
print("判断为闰年")
else:
print("不是闰年")
'''
def day(a):
if a == 1:
result = 0
return result
elif a == 2:
result = 31
return result
elif a == 3:
result = 31 + 28
return result
elif a == 4:
result = 31 * 2 + 28
return result
elif a == 5:
result = 30 + 31 * 2 + 28
return result
elif a == 6:
result = 31 * 3 +30 + 28
return result
elif a == 7:
result = 30 *2 + 31 * 3 + 28
return result
elif a == 8:
result = 30 *2 + 31 * 4 + 28
return result
elif a == 9:
result = 30 *2 + 31 * 5 + 28
return result
elif a == 10:
result = 30 *3 + 31 * 5 + 28
return result
elif a == 11:
result = 30 *3 + 31 * 6 + 28
return result
elif a == 12:
result = 30 *4 + 31 * 6 + 28
return result
i = 0
while True:
n = input("请输入年月日,例如20160818:")
while len(n) != 8:
print("格式错误!")
n = input("请输入年月日,例如20160818:")
else:
m = []
for i in n:
m.append(i)
a = m[0]+m[1]+m[2]+m[3]#年份
b = m[4]+m[5]#月份
c = m[6]+m[7]#日期
a = int(a)
b = int(b)
c = int(c)
if a % 400 == 0 and b < 12 and c <31:
#print(a%400)
print("判断为闰年")
day_nums = day(b) + c
if b >= 2:
day_nums += 1
print("此日是今年第%d天"%day_nums)
elif a % 4 == 0 and a % 100 != 0 and b < 12 and c <31:
#print("a",a % 400)
print("判断为闰年")
day_nums = day(b) + c
if b >= 2:
day_nums += 1
print("此日是今年第%d天" % day_nums)
elif b > 12 or c >31:
print("日期错误,请检查")
else:
#print("b",a % 400)
day_nums = day(b) + c
print("不是闰年")
print("此日是今年第%d天" % day_nums)
#print(type(a))
运行结果:
请输入年月日,例如20160818:20161001
判断为闰年
此日是今年第275天
请输入年月日,例如20160818:18811010
不是闰年
此日是今年第283天
请输入年月日,例如20160818:llll
格式错误!
请输入年月日,例如20160818:20160101
判断为闰年
此日是今年第1天
请输入年月日,例如20160818:20160131
不是闰年
此日是今年第31天
请输入年月日,例如20160818:20160229
判断为闰年
此日是今年第61天
请输入年月日,例如20160818:20161301
日期错误,请检查
请输入年月日,例如20160818:20160101
判断为闰年
此日是今年第1天