Я пытаюсь проверить, является ли дата действительной, но я застрял при попытке выяснить, действительна ли дата високосного года. Я продолжаю получать это сообщение, которое говорит:
ПОСЛЕДНЯЯ РАБОТА 02/11/2018, 12:49:03
Ваша функция сказала, что 29/2/1754 является действительным, но это недействительно.
Я знаю, что это не високосный год. Я пытаюсь возвращать значение False каждый раз, когда год не является високосным, в функции validDate.
Любая информация, которую вы можете дать мне, будет принята с благодарностью. Спасибо
def isLeapYear(y):
assert y > 1753, False
return y % 4 == 0 and (y % 100 != 0 or y % 400 == 0)
def daysIn(y, m):
assert 1 <= m <= 12, False
if m == 9 or m == 4 or m == 6 or m == 11:
return 30
elif m == 1 or m == 'March' or m == 'May' or m == 'July':
return 31
elif m == 8 or m == 10 or m == 12 or m == 3 or m == 5 or m == 7:
return 31
elif m == 2 and isLeapYear(y) is True:
return 29
elif m == 2 and isLeapYear(y) is False:
return 28
else:
return False
def validDate(y, m, d):
try:
if daysIn(y, m) and isLeapYear(y):
return True
except AssertionError:
return False
if y > 1753 and 1 <= m <= 12 and 1 <= d <= 31:
return True
elif y == isLeapYear(y) and m == 2 and d == 29:
return False
else:
return False
if __name__ == "__main__":
isLeapYear(2012)
daysIn(2012, 10)
validDate(1752, 10, 10)