[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
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
沒有留言:
張貼留言