Загрузка данных


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}")