• 1
    Entrada e saída
    • Tarefas
  • 2
    Condições
    • Tarefas
  • 3
    Loop for
    • Tarefas
  • 4
    Strings
    • Tarefas
  • 5
    Loop while
    • Tarefas
  • 6
    Listas
    • Tarefas
  • 7
    Matrizes 2D
    • Tarefas
  • 8
    Dicionários
    • Tarefas
  • 9
    Conjuntos
    • Tarefas
  • 10
    Funções e recursão
    • Tarefas
  • к

Lição 5. While cycle

Dificuldade:

Tarefa«Acumulação de fundos para compra»

💻 Python

Você trabalha como programador em uma empresa que cria um "arquivo digital de arquivos pessoais". Sua tarefa & mdash; Desenvolver um módulo para verificar as datas inseridas. O sistema deve ser absolutamente confiável e não aceitar datas incorretas ou impossíveis (por exemplo, 30 de fevereiro ou 31 de abril), bem como dados no formato errado.

O programa deve ler as linhas uma após a outra até que o usuário insira & nbsp; 0 . Para cada linha inserida, é necessário verificar: se é uma data correta e existente no & nbsp; formato dd.mm.YYYY .

Formato de entrada

O programa recebe várias linhas como entrada. Cada linha contém uma data para verificação ou um conjunto arbitrário de caracteres. A entrada de dados termina quando o símbolo   0 é inserido em uma linha separada.

Formato de saída

para cada linha inserida (exceto a linha final & nbsp; 0 ), o programa deve exibir em uma nova linha:

  • data correta & nbsp; & mdash; se a linha for uma data existente no formato & nbsp; DD.MM.YYYY . Em todos os outros casos (formato incorreto, data inexistente).

Exemplo

Entrada

12.12.2024
31.04.2023
02.29.2023
Hello World
02.29.2024
01/01/2000
0

Saída

A data correta
data ou formato incorreto
data ou formato incorreto
data ou formato incorreto
data correta
data correta

Dica

There will be no clue here, decide for yourself!

main.py
Teste 1
Teste 2
Teste 3
Teste 4
Teste 5
Teste 6
Teste 7
Teste 8
Teste 9
Teste 10
Solução do desenvolvedor
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("Некорректная дата или формат")

🎉 Parabéns! 🎉

Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.

AD

Publicidade

red-snake blue-snake green-snake

Executando seu código...

Assistente de IA

Olá! Sou seu assistente de programação. Faça qualquer pergunta sobre Python — posso explicar funções, métodos e ajudá-lo com a tarefa atual!