鱼C论坛 | Python每日一题 4

2020-02-29  本文已影响0人  大师的学徒

题目:输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于2时需考虑多加一天

def feb_switch(x):
    if x%4 == 0 :
        return 1
    else:
        return 0
    
while 1:

    date = input('Please input date in format YYYY.month.day\n')
    x = date.split('.',3)
    day = 0
    big = [1, 3, 5, 7, 8, 10, 12]
    feb = [28,29]

    if feb_switch(int(x[0])) == 0 and int(x[1]) ==2 and int(x[2]) >28:
        print("不是闰年,输入错误!!!")
    elif feb_switch(int(x[0])) == 1 and int(x[1]) ==2 and int(x[2]) >29:
        print("二月份哪有那么多天!!!")
    elif int(x[1]) not in big and int(x[2]) >30:
        print("当前月份只有30天!!!")
    elif int(x[1]) in big and int(x[2]) >31:
        print("当前月份只有31天!!!")
    else:
        for i in range(int(x[1]) - 1):
            if i + 1 in big:
                day += 31
            elif i + 1 == 2:
                    day += feb[feb_switch(int(x[0]))]
            else:
                day += 30

        day += int(x[2])
        print(day)


其实应该把输入合法性单独列出来一个函数会整洁很多。。。有点懒了。。。

上一篇下一篇

猜你喜欢

热点阅读