百度之星练习:百度时间【恶心的模拟算日子数】



分析
恶心的格式判断
然后逐年算日子
分年分月分日
注意闰年的判断,月份都要列出来
Ac code
import sys
input = sys.stdin.readlined1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
d2 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]def check(year, month, day):if len(year) != 4 or len(month) != 2 and len(day) != 2:return Falsetry: year, month, day = int(year), int(month), int(day)except:return Falseflag = Falseif year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):flag = Trueif flag:return year >= 2000 and 1 <= month <= 12 and 1 <= day <= d2[month - 1]else:return year >= 2000 and 1 <= month <= 12 and 1 <= day <= d1[month - 1]def getRes(year, month, day):year, month, day = int(year), int(month), int(day)res = 0# yearfor i in range(2000, year):if i % 400 == 0 or (i % 4 == 0 and i % 100 != 0):#print(364)res += 366else:#print(365)res += 365# monthflag = Falseif year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):flag = Trued = d2 if flag else d1for i in range(month - 1):#print(d[i])res += d[i]# dayres += dayreturn res - 1while True:s = input().strip()if s == '':breakflag = Trueif '-' not in s and '/' not in s:print('Error')elif '-' in s and '/' in s:print('Error')elif '-' in s:if s.count('-') != 2:print('Error')else:y, m, d = s.split('-')if check(y, m, d):print(getRes(y, m, d))else:print('Error')elif '/' in s:if s.count('/') != 2:print('Error')else:m, d, y = s.split('/')if check(y, m, d):print(getRes(y, m, d))else:print('Error')
总结
这日子不好过啊
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
