• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 5. Цикл while

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«Цифровой архив»

Вы работаете программистом в компании, которая создает "Цифровой архив личных дел". Ваша задача — разработать модуль для проверки вводимых дат. Система должна быть абсолютно надежной и не принимать некорректные или невозможные даты (например, 30 февраля или 31 апреля), а также данные в неверном формате.

Программа должна считывать строки одну за другой, пока пользователь не введет 0. Для каждой введенной строки необходимо провести проверку: является ли она корректной, существующей датой в формате ДД.ММ.ГГГГ.

Формат ввода

Программа получает на вход несколько строк. Каждая строка содержит либо дату для проверки, либо произвольный набор символов. Ввод данных завершается, когда в отдельной строке вводится символ 0.

Формат Вывода

Для каждой введенной строки (кроме завершающей строки 0) программа должна вывести в новой строке:

  • Корректная дата — если строка является существующей датой в формате ДД.ММ.ГГГГ.
  • Некорректная дата или формат — во всех остальных случаях (неверный формат, несуществующая дата).

Пример

Ввод

25.12.2024
31.04.2023
29.02.2023
hello world
29.02.2024
01.01.2000
0

Вывод

Корректная дата
Некорректная дата или формат
Некорректная дата или формат
Некорректная дата или формат
Корректная дата
Корректная дата

Подсказка

Тут подсказки не будет, решай сам!

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
import datetime

while True:
    # Считываем очередную строку от пользователя
    input_str = input()

    # Проверяем условие выхода из цикла
    if input_str == '0':
        break

    try:
        # Пытаемся преобразовать строку в дату по заданному формату.
        # Формат '%d.%m.%Y' означает:
        # %d - день месяца с ведущим нулем (01-31)
        # %m - месяц с ведущим нулем (01-12)
        # %Y - год в виде четырех цифр (например, 2024)
        #
        # Эта функция автоматически проверяет и формат, и существование даты.
        # Например, для "30.02.2024" она вызовет ошибку, так как такой даты нет.
        datetime.datetime.strptime(input_str, '%d.%m.%Y')
        
        # Если преобразование прошло успешно, значит дата корректна
        print("Корректная дата")

    except ValueError:
        # Если в процессе преобразования возникла ошибка ValueError,
        # это означает, что либо формат строки не соответствует 'ДД.ММ.ГГГГ',
        # либо сама дата невозможна (например, 31 апреля).
        print("Некорректная дата или формат")

🎉 Поздравляем! 🎉

Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.

AD

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!