Olá, Aristóteles. Como vai?
Parabéns por mais uma excelente resolução de desafio no fórum! O seu código está impecável, muito limpo e direto ao ponto. Você aplicou perfeitamente os conceitos fundamentais de funções (def/return) combinados com a estrutura condicional encadeada (if, elif e else).
A sua lógica de intervalos está matematicamente perfeita. Um grande acerto no seu código foi o uso da condição simplificada (ou encadeada) na linha elif 12 <= hora < 18:. Em muitas linguagens de programação, você seria obrigado a escrever elif hora >= 12 and hora < 18:, mas o Python permite essa sintaxe elegante e intuitiva, que aproxima a programação da álgebra tradicional.
Como você está estudando boas práticas no uso de funções, quero te trazer duas sugestões de refinamento técnico que são muito valorizadas no mercado de trabalho:
1. Simplificação com Retornos Antecipados (Early Return)
Quando uma função possui a palavra-chave return, a execução dela é interrompida imediatamente assim que essa linha é atingida. Isso significa que, se a primeira condição (hora < 12) for verdadeira, o Python devolve "Bom dia!" e nem olha para o resto do código.
Sabendo disso, nós podemos remover o elif e o else e deixar a estrutura ainda mais direta, pois o próprio fluxo lógico já garante a exclusão dos casos anteriores. Veja como fica limpo:
def saudacao(hora):
if hora < 12:
return "Bom dia!"
if hora < 18:
return "Boa tarde!"
return "Boa noite!"
2. Tratamento de Limites e Valores Inválidos
No mundo real, os usuários podem acabar digitando valores que não fazem sentido para um relógio, como -5 ou 27. Se o usuário digitar 27 no seu código atual, o programa cairá no bloco else e responderá "Boa noite!", o que é uma inconsistência lógica.
Para tornar sua função mais robusta (blindada contra erros de entrada), uma excelente prática é adicionar uma checagem de intervalo logo no início do bloco:
def saudacao(hora):
# Valida se a hora está dentro do padrão real de um dia
if hora < 0 or hora > 23:
return "Hora inválida! Digite um valor entre 0 e 23."
if hora < 12:
return "Bom dia!"
if hora < 18:
return "Boa tarde!"
return "Boa noite!"
A sua versão original cumpre com perfeição o escopo pedagógico da atividade e exibe as mensagens de forma exata. Continue mantendo esse ritmo incrível e essa consistência fantástica nas postagens do fórum!
Espero que possa ter lhe ajudado!