Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

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

from datetime import datetime

def titulo():
    print('''
░██████╗░█████╗░██╗░░░██╗██████╗░░█████╗░░█████╗░░█████╗░███████╗░██████╗██╗██╗
██╔════╝██╔══██╗██║░░░██║██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔════╝██║██║
╚█████╗░███████║██║░░░██║██║░░██║███████║██║░░╚═╝██║░░██║█████╗░░╚█████╗░██║██║
░╚═══██╗██╔══██║██║░░░██║██║░░██║██╔══██║██║░░██╗██║░░██║██╔══╝░░░╚═══██╗╚═╝╚═╝
██████╔╝██║░░██║╚██████╔╝██████╔╝██║░░██║╚█████╔╝╚█████╔╝███████╗██████╔╝██╗██╗
╚═════╝░╚═╝░░╚═╝░╚═════╝░╚═════╝░╚═╝░░╚═╝░╚════╝░░╚════╝░╚══════╝╚═════╝░╚═╝╚═╝''')

def obter_hora_atual():
    return datetime.now().hour


def escolher_saudacao(hora_atual):
    if hora_atual < 12:
        saudacao_adequada = 'Bom dia!'
    elif hora_atual < 18:
        saudacao_adequada = 'Boa tarde!' 
    else: 
        saudacao_adequada = 'Boa noite!'
    return saudacao_adequada  


def identificacao():
    return input('\nDigite seu nome por gentileza: ').strip()

def criar_saudacao(saudacao):
    def saudar(nome):
        return f'{saudacao}, {nome}'
    return saudar


def main():
    titulo()
    hora_atual = obter_hora_atual()
    saudacao = escolher_saudacao(hora_atual)
    nome = identificacao()
    cumprimento = criar_saudacao(saudacao)
    print(cumprimento(nome))


if __name__ == '__main__':
    main()
1 resposta

Oi, Giovanni. Como vai?

O seu código ficou bem completo e organizado, com funções separadas para titulo(), obter_hora_atual(), escolher_saudacao(), identificacao() e criar_saudacao(). Essa divisão ajuda bastante na leitura, e o uso de datetime.now().hour deixou a saudação dinâmica conforme o horário atual.

Você pode permitir testar a função escolher_saudacao() com horários fixos, sem depender sempre da hora do sistema:

def escolher_saudacao(hora_atual):
    if hora_atual < 12:
        return "Bom dia!"
    elif hora_atual < 18:
        return "Boa tarde!"
    return "Boa noite!"

print(escolher_saudacao(9))
print(escolher_saudacao(15))
print(escolher_saudacao(21))

Esse código testa a mesma função com diferentes horários e facilita conferir se cada saudação está sendo retornada corretamente. Você pretende criar mais testes para validar outras partes do programa, como a função criar_saudacao()?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!