2
respostas

Praticando Python | 023 | Código | Faça como eu fiz: saudação personalizada

Bom dia, apenas para compartilha conforme é orientado no curso.

aqui eu consegui explorar um pouco mais dos recursos que aprendi até esse momento.

a dificuldade que estou enfrentando no python é que não consigo depurar o que o código está fazendo linha a linha, então tenho feito um pedaço do processo por vez e vou tentando pouco a pouco para ver se está ficando como eu estou pensando e conforme o programa vai dando erro, vou tratando um erro por vez.

aproveitei o exercio e tentei explorar algumas possibilidades.

# Praticando Python | 023 | Código | Faça como eu fiz: contador de caracteres

# Beatriz está desenvolvendo um sistema de atendimento para um site de serviços. Ela deseja criar um programa que exiba uma saudação personalizada dependendo da hora do dia que o usuário acessa a plataforma. O sistema deverá ter a seguinte regra:
# Se for antes das 12h, exibir "Bom dia";
# Entre 12h e 18h, exibir "Boa tarde";
# Após 18h, exibir "Boa noite".

'''Função | Validar Horario'''
def ler_hora(msg: str) -> int:
    # laço infinito
    while True:
        # .strip() para remover espaços
        entrada = input(msg).strip()
        try:
            hora = int(entrada)
            if 0 <= hora <= 23:
                return hora
            print('Erro: É importante que você informe uma hora entre 0 e 23.')
        except ValueError:
            print('Erro: Por favor, digite apenas números inteiros para a hora.')

'''Função | Definir a saudação'''
def saudacao_por_hora(hora: int) -> str:
    # Classificação de horario
    if hora < 12:
        return "Bom dia"
    elif hora <= 18:
        return "Boa tarde"
    else:
        return "Boa noite"

'''Função | Personalizada | Melhorar experiencia com o usuário'''
def escolher_tratamento() -> str:
    # Uso de Dicionário para que a pessoa possa escolher como ela deseja ser tratada
    opcoes = {
                "1": "Sr.",
                "2": "Sra.",
                "3": "Sr(a).",
                "4": "Sem tratamento",
                "5": "Outro (personalizar)"
            }

    print("\nComo você prefere ser tratado(a)?")
    for k, v in opcoes.items():
        print(f"{k} - {v}")
        # {k} = chave do dicionário
        # {v} = valor do dicionário

    # laço infinito 
    while True:
        # Opção de escolha
        escolha = input("Escolha uma opção (1-5): ").strip()

        # Verificar se a chave digitada (escolha) existe no dicionário (opcoes)
        if escolha in opcoes:
            # A opção 4 é um escolha de sem tratamento, então chamamos apenas pelo nome
            if escolha == "4":
                return ""  
            # A opção 5 é personalizada, então vamos obter essa informação do usuário
            elif escolha == "5":
                personal = input("Digite a forma de tratamento desejada (ex.: Prezade, Menine, etc.): ").strip()
                return personal
            else:
                return opcoes[escolha]
        # Erro: Se o que você escolheu no dicionário não for valido, vai sair aqui
        # Aqui como estamos dentro do laço infinito, ele vai mostrar a mensagem e recomeçar o processo.
        print("Opção inválida. Tente novamente.")

'''Função | Menu Principal do app'''
def main():
    # Chamar a função do Nome
    nome = input("Digite seu nome: ").strip()
    # Chamar a função do horario
    hora = ler_hora("Digite a hora (0 a 23): ")
    # Chamar a função de tratamento
    tratamento = escolher_tratamento()

    # O resultado do texto (bom dia, boa tarde, boa noite) guardo em cumprimento
    cumprimento = saudacao_por_hora(hora)
    
    # Montar a mensagem combinando o Nome, hora e tratamento
    if tratamento:
        mensagem = f"{cumprimento}, {tratamento} {nome}!"
    else:
        mensagem = f"{cumprimento}, {nome}!"

    print(mensagem)

if __name__ == "__main__":
    main()
2 respostas

Olá, Estudante! Como vai?

Uau, parabéns pela dedicação!

Você foi muito além do que a atividade pedia e aplicou conceitos avançados e muito importantes, como:

Sobre a dificuldade de depurar linha a linha, a estratégia que você está usando (fazer um pedaço, testar e tratar o erro) é muito válida e se chama "desenvolvimento incremental". Porém, para conseguir ver o código rodando passo a passo, a maioria dos editores (como o VS Code ou PyCharm) possui uma ferramenta visual de Debug.

Para saber mais:

Sugestão de conteúdo:

Continue explorando e testando novas possibilidades, seu código está muito bem estruturado.

Bons estudos!

Sucesso

Imagem da comunidade

Muito obrigado