1
resposta

Prática - Saudação personalizada

def saudacao(hora):
    if hora < 12:
        return "Bom dia!"
    elif 12 <= hora < 18:
        return "Boa tarde!"
    else:
        return "Boa noite!"

# Exemplo de uso:
hora_atual = int(input("Digite a hora atual (0-23): "))
print(saudacao(hora_atual))

Entrada:

Digite a hora atual (0-23): 13

Saída:

Boa tarde!
1 resposta

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!