1
resposta

[Sugestão] Faça como eu fiz: saudação personalizada

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Alex. Como vai?

Parabéns por alcançar o arquivo Alura ex031.py! É muito gratificante acompanhar a sua evolução constante e ver como você está consolidando o uso de funções em Python de maneira tão estruturada.

A lógica da sua função gerar_saudacao ficou excelente. Você utilizou perfeitamente as estruturas condicionais (if, elif e else) para mapear os períodos do dia e tratou muito bem os intervalos de tempo. O encadeamento 12 <= hora <= 18 na linha 5 é um recurso lindo do Python que deixa a leitura do código super natural, parecendo matemática pura. O teste no terminal digitando 15 e recebendo o "Boa tarde!" comprova que o fluxo está impecável!

Para enriquecer ainda mais a sua prática, quero compartilhar um detalhe sutil sobre como os interpretadores de código funcionam quando encontram a palavra-chave return, além de uma dica de validação:


1. Otimização do Fluxo de Controle (if / elif / else)

Como a sua função utiliza a instrução return dentro de cada bloco condicional, você pode simplificar a estrutura do código.

Quando o interpretador do Python executa um return, ele encerra imediatamente a execução daquela função e entrega o valor. Isso significa que, se a hora for menor que 12, ele retorna "Bom dia!" e nem sequer lê o restante das linhas abaixo. Devido a esse comportamento, o uso de elif e else torna-se opcional para o alinhamento.

Veja como o seu código poderia ser reescrito mantendo exatamente o mesmo comportamento, mas de forma ainda mais direta (uma prática de mercado muito associada ao conceito de Clean Code):

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

O que mudou? > No segundo bloco, removemos o 12 <= porque se o código chegou até ali, ele obrigatoriamente já é maior ou igual a 12 (caso contrário, teria entrado no primeiro if). E o "Boa noite!" virou o retorno padrão no fim do bloco, eliminando a necessidade da palavra else.


2. Blindando o Código contra Horas Inválidas

No seu input, você colocou uma instrução excelente pedindo para o usuário digitar de 0-23. Mas e se o usuário digitar por engano um número fora desse intervalo, como 25 ou -3? No formato atual, o seu sistema retornará "Boa noite!", o que seria uma inconsistência lógica.

Uma boa prática para tornar o seu programa profissional é adicionar uma pequena camada de validação no início da função:

def gerar_saudacao(hora):
    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!"

Dessa forma, seu script fica completamente protegido contra entradas inesperadas.

Seu capricho na separação das etapas (Criação, Entrada, Processamento e Saída) continua exemplar. Parabéns pela constância e pelo excelente código!

Espero que possa ter lhe ajudado!