2020年4月18日 星期六

[C_MM232-易] 判斷日期是否正確

[C_MM232-易] 判斷日期是否正確

成績: 0 / 倒扣: 0.8
判斷日期是否正確
Problem Description給定一個日期(以 yyyy-MM-dd 的格式來表示),請寫一支程式判斷這個日期是否正確。舉例而言:
2012-02-29 :正確
2011-02-29 :不正確,因為 2011 年的 2 月只有 28 天
-1111-02-29 :不正確,因為年不可能為負數
2011-13-29 :不正確,因為月份不可能超過 12
2011-01-32 :不正確,因為 1 月不會有 32 天
Input File Format輸入的第一行為一個整數 n ,代表底下測資的個數( n<=10 )。
之後有 n 行字串。每一行字串為一日期,日期以 yyyy-MM-dd 的格式表示。
Output Format輸出每一個測資是否為正確的日期,若為正確的日期,請輸出 true ,否則請輸出 false (均小寫)
Example
Sample Input:Sample Output:
5
2012-02-29
2011-02-29
-1111-02-29
2011-13-29
2011-01-32

while True:
    try:
        month_day = [29, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        def Runnian(y):
            return True if y % 400 == 0 or(y % 4 == 0 and y % 100 !=0) else False
        N = int(input())
        for i in range(N):
            data = list(map(str,input().split('-')))

            if len(data) > 3: # 
                print('false')
            else:
                if int(data[1]) > 12: # 檢查月份
                    print('false')
                else:
                    if Runnian(int(data[0])): # 檢查天數 如果是閏年
                        if int(data[1]) ==2 and int(data[2]) <= month_day[0]:
                            print('true')
                        elif int(data[2]) <= month_day[int(data[1])]:
                            print('true')
                        else:
                            print('false')
                    else:
                        print('true') if int(data[2]) <= month_day[int(data[1])] else print('false')
    except(EOFError):
        break

沒有留言:

張貼留言