Python基础练习之闰年判断以及计算所在天数

用函数实现输入某年某月某日,判断这一天是这一年的第几天?闰年情况也考虑进去
(函数用的很少,代码冗余较高,只是练习了一下思路,后续仍需优化)

'''
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天

你可能感兴趣的:(Python)