Olá, Andressa. Como vai?
O seu código ficou excelente e resolve muito bem o problema utilizando a biblioteca interna datetime do Python para capturar a hora real do sistema. Essa é uma ótima prática no mundo real, pois evita que o usuário precise digitar o horário manualmente.
Analisando a estrutura que você montou, as condições do if, elif e else estão perfeitas e cobrem todas as faixas de horário do dia de forma limpa e legível.
Para enriquecer ainda mais o seu aprendizado e complementar a atividade, podemos pensar em duas melhorias práticas para esse código:
1. Tornar a função mais flexível
Do jeito que está, a função sempre pega a hora atual do computador. Se quisermos testar se a função realmente funciona para o cenário da Beatriz (onde o usuário digita a hora ou o sistema recebe um horário específico), podemos passar a hora como um parâmetro opcional.
2. Tratar possíveis erros
Se recebermos uma hora vinda de um input do usuário, é uma boa prática garantir que o valor esteja entre 0 e 23 antes de aplicar as condições.
Veja um exemplo de como implementar essas ideias:
from datetime import datetime
def saudacao(hora=None):
# Se nenhuma hora for passada, usamos a hora atual do sistema
if hora is None:
hora = datetime.now().hour
# Validação para garantir que a hora seja válida
if not (0 <= hora <= 23):
return "Hora inválida! Por favor, use um valor entre 0 e 23."
if hora < 12:
return "Bom dia!"
elif hora < 18:
return "Boa tarde!"
else:
return "Boa noite!"
# Testando com a hora do sistema
print(saudacao())
# Testando o cenário do exemplo da atividade (Entrada: 15)
print(saudacao(15))
Note que no elif hora < 18 não precisamos colocar 12 <= hora, porque se o código chegou até essa linha, o Python já garantiu no if anterior que a hora não é menor que 12. Isso deixa o seu código ainda mais enxuto.
Parabéns pela dedicação e por praticar o uso de funções.
Espero que possa ter lhe ajudado!