1
resposta

[Sugestão] Sugestão de solução para a questão 6 usando booleanos

Resolvi a questão 6 usando booleanos porque queria uma solução que não tivesse tantas linhas com else: print('Data inválida'). Tenho uma dúvida sobre booleanos: Sempre que eu defino um booleano com False, preciso definir o booleno True?

Poderiam, por favor, conferir minha solução?

#Colete um dia, um mês e um ano:
dia = int(input("Insira aqui um dia: "))
mes = int(input("Insira aqui um mês: "))
ano = int(input("Insira aqui um ano: "))

mes_31_dias = [1,3,5,7,8,10,12]

mes_30_dias = [4,6,9,11]

data_valida = False

#Análise de fevereiro

ano_bissexto = False

if ano%4 == 0:
  ano_bissexto = True #Definimos um booleano para se o ano for bissexto

if mes == 2:
  if ano_bissexto:  
    if 0 < dia <= 29:
      data_valida = True   #Caso esteja no intervalo da condição a data é válida, se não estiver a data é inválida
  else:
   if 0 < dia <= 28:
    data_valida = True 

#Análise dos outros meses           
elif mes in mes_31_dias:
  if 0 < dia <= 31:
   data_valida = True
          
elif mes in mes_30_dias:
    if 0 < dia <= 30 :
      data_valida = True    
else:
  data_valida = False

if data_valida:
  print("Data válida")
else:
  print("Data inválida")
1 resposta

Oi, Meire! Tudo bem?

Não precisamos definir sempre um booleano com True quando este é definido, a princípio, como False. Na verdade, os valores True e False são usados para representar os dois estados possíveis de um booleano. Você pode definir um booleano com qualquer um desses valores, dependendo do que você precisa para o seu código! A maneira pela qual você utilizou esse recurso está correta. :)

Sobre a sua solução, parabéns! Seu código está bastante organizado e válido para a proposta do desafio. Há apenas um detalhe que gostaria de comentar: quando pensamos em anos bissextos, as condições exigidas são:

  • Se o ano for divisível por 4;
  • No entanto, se o ano for divisível por 100, então ele não é bissexto, a menos que:
  • O ano seja divisível por 400.

Em seu programa, estamos analisando apenas o primeiro critério, o que pode levar a resultados errados após a execução. Abaixo trouxe uma alternativa legal que você pode implementar:

if ano % 4 == 0 and (ano % 100 != 0 or ano % 400 == 0):
    ano_bissexto = True

Essa lógica — estruturada a partir de um if com condições compostas — garante que anos divisíveis por 4 sejam considerados bissextos, exceto aqueles divisíveis por 100 (a menos que também sejam divisíveis por 400)!

Continue caprichando nas atividades, Meire. Fico à disposição para te ajudar caso novas dúvidas apareçam.

Abraços!

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