def validate_date(day, month, year):
# Проверка базовых диапазонов
if year <= 0 or not (1 <= month <= 12) or not (1 <= day <= 31):
return False
# Дни в месяцах (индекс 0 - январь, 1 - февраль и т.д.)
days_in_months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# Проверка на високосный год для февраля
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
days_in_months[1] = 29
# Проверка соответствия дня месяцу
if day > days_in_months[month - 1]:
return False
return True
def input_until_valid(validator_func):
attempts = 0
while True:
attempts += 1
try:
print(f"\nПопытка №{attempts}")
d = int(input("Введите день: "))
m = int(input("Введите месяц: "))
y = int(input("Введите год: "))
if validator_func(d, m, y):
print("Дата корректна")
break
else:
print("Ошибка ввода (некорректная дата)")
except ValueError:
print("Ошибка: вводите только целые числа")
return attempts
# Основная программа
if __name__ == "__main__":
count = input_until_valid(validate_date)
print(f"Всего затрачено попыток: {count}")