Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Questão 6 da estrutura de dados.

Não entendi porque 4,imagino que é o tempo para termos um ano bissexto. Mas aí piora pq 400 ou 100?

dia = int(input('dia: '))
mes = int(input('mes: '))
ano = int(input('ano: '))

if mes == 2: # analise de fevereiro pra saber se o ano é Bissexto.
    if ano % 4 == 0 and (ano % 400 == 0 or ano % 100 != 0):
        dias_fevereiro = 29
    else:
    dias_fevereiro = 28

    if dia >= 1 and dia <= dias_fevereiro:
        print('Data válida')
      else:
        print('Data inválida') 
elif mes in [1, 3, 5, 7, 8, 10, 12]: #mesescom31dias
    if dia >= 1 and dia <= 31:
        print('Data válida')
    else:
        print('Data inválida')   
elif mes in [4, 6, 9, 11]: #meses com 30 dias
    if dia >= 1 and dia <= 30:
        print('Data válida')
else:
    print('Data inválida')
1 resposta
solução!

Oi, Carlos! Como você está?

Esses critérios foram adicionados em nosso programa devido às regras de definição de um ano bissexto:

  1. Todo ano divisível por 4 é bissexto;

  2. Porém, todo ano divisível por 100 não é bissexto;

  3. Só que todo ano divisível por 400 é bissexto.

Nesse sentido, quando escrevemos ano % 4 == 0 and (ano % 400 == 0 or ano % 100 != 0), estamos nos certificando de que o ano é divisível por 4 e se é divisível por 400 ou não é divisível por 100. Se essas condições forem verdadeiras, o ano é bissexto!

Para visualizar melhor essas questões, podemos observar os anos 2000 e 1900: o ano 2000 é bissexto porque ele é divisível por 4 e por 400. Mas o ano 1900, embora seja divisível por 4, não é bissexto porque ele é divisível por 100 e não é divisível por 400.

Espero ter ajudado, Carlos! Se surgirem novas dúvidas, fico à disposição.

Um abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!