Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Faça como eu fiz: saudação personalizada

import datetime

agora = datetime.datetime.now()
agora_ajustada = agora - datetime.timedelta(hours=3)
current_time_str = agora_ajustada.strftime('%H:%M')

if current_time_str < '12:00':
  print ('Bom dia!')

elif current_time_str >= '12:00' and current_time_str < '18:00':
  print ('Boa tarde!')

else:
  print('Boa noite!')
2 respostas

Olá, Estudante. Como vai?

O seu código ficou muito interessante! Você seguiu um caminho bem avançado ao lidar diretamente com fusos horários e formatação de strings, utilizando o timedelta(hours=3) para ajustar manualmente o horário do servidor (o que é muito comum quando rodamos códigos em servidores de nuvem que ficam no exterior). A lógica das condições if, elif e else funcionou perfeitamente e resolve o desafio proposto.

Para agregar ainda mais valor ao seu aprendizado e trazer algumas sugestões de boas práticas, podemos olhar para a forma como o Python compara esses horários:

1. Comparação de Strings vs. Comparação de Inteiros
No seu código, você transformou a hora em texto (strftime('%H:%M')) e comparou como string: current_time_str < '12:00'. No Python, isso funciona porque as strings de hora em formato 24h seguem uma ordem alfabética/numérica correta. No entanto, a boa prática na programação é extrair a hora diretamente como um número inteiro (int). Comparar números deixa o código mais seguro, legível e evita problemas caso você precise fazer manutenções futuras.

2. Otimização das Condições
No seu elif, você utilizou current_time_str >= '12:00' and current_time_str < '18:00'. Na lógica de programação, a primeira parte (>= '12:00') é redundante. Se o programa chegou até o elif, o if anterior já garantiu que o horário não é menor que 12h. Portanto, basta checar se ele é menor que 18h.

Veja uma sugestão de como reestruturar o seu código aplicando essas boas práticas e encapsulando a lógica dentro de uma função, que é o tema central deste capítulo do curso:

import datetime

def gerar_saudacao():
    # Captura a hora atual do sistema
    agora = datetime.datetime.now()
    
    # Aplica o ajuste de fuso horário de 3 horas
    agora_ajustada = agora - datetime.timedelta(hours=3)
    
    # Extrai apenas a hora como um número inteiro (ex: 15)
    hora_atual = agora_ajustada.hour
    
    # Estrutura condicional simplificada comparando números
    if hora_atual < 12:
        return 'Bom dia!'
    elif hora_atual < 18:
        return 'Boa tarde!'
    else:
        return 'Boa noite!'

# Chamando a função e exibindo o resultado
print(gerar_saudacao())

Note que ao usar o .hour, isolamos apenas a hora cheia do relógio, tornando a leitura do fluxo de decisões (if/elif/else) extremamente simples e elegante.

Parabéns pela resolução do exercício e por se atentar aos detalhes de manipulação de data e hora!

Espero que possa ter lhe ajudado!

solução!

Obrigado pelas dicas!