1
resposta

Registrando voluntários para uma campanha

import msvcrt
import os

def limpar_tela() -> None:
    os.system("cls")

def pausa_limpa(texto) -> None:
    print()
    print(texto)
    print("Aperte uma tecla para continuar", end="", flush=True)
    msvcrt.getch()
    limpar_tela()

lista_nomes = []

def adicionar_nomes() -> None:
    while True:
        print("============Adicionar nomes============")
        entrada = input("Digite o nome do voluntário ou 's' para voltar ao menu: ").strip()

        if entrada.casefold() in ["s", "sair"]:
            pausa_limpa("Voltando ao menu")
            return

        try:
            nome_validado = validar_nome(entrada)
        except (TypeError, ValueError) as e:
            pausa_limpa(f"Entrada inválida: {e}")
            continue

        if nome_validado in lista_nomes:
            resposta = input(f"{nome_validado} já está na lista de voluntário, deseja adicionar novamente ['s/'n']: ").strip()
            if resposta.casefold() in ["s", "sim"]:
                lista_nomes.append(nome_validado)
                pausa_limpa(f"O nome {nome_validado} foi adicionado a lista de voluntários.")
                continue
            elif resposta.casefold() in ["n", "nao"]:
                pausa_limpa(f"O nome {nome_validado} NÃO foi adicionado a lista de voluntários.")
                continue
            else:
                pausa_limpa("Resposta inválida. Apenas 's' ou 'n'.")
        else:
            lista_nomes.append(nome_validado)
            pausa_limpa(f"O nome {nome_validado} foi adicionado a lista de voluntários.")
            continue

def vizualizar_lista() -> None:
    if not lista_nomes:
        pausa_limpa("Não há nomes cadastrados na lista de voluntários.")
        return
    
    print("============Lista de nomes============")
    for i, nome in enumerate(lista_nomes, start=1):
        print(f"{i} - {nome}")
    pausa_limpa("Retornando ao menu")
    return

def menu():
    while True:
        print("""===========Menu===========
1 - Adicionar nomes
2 - Vizualizar lista 
3 - Sair do programa
"""
              )
        opcao = input("Digite a opção desejada: ")

        if opcao == "1":
            pausa_limpa("Opção 1 escolhida")
            adicionar_nomes()
        elif opcao == "2":
            pausa_limpa("Opção 2 escolhida")
            vizualizar_lista()
        elif opcao == "3":
            pausa_limpa("Opção 3 escolhida")
            print("Fim do programa.")
            break
        else:
            pausa_limpa("Opção inválida, digite novamente.")
            continue

def validar_nome(nome: str) -> str:
    if not isinstance(nome, str) or nome.isdigit():
        raise TypeError("O nome deve ser uma string.")
    if not nome:
        raise ValueError("O nome não pode estra vazio.")
    return nome.title()

def main():
    menu()

if __name__ == "__main__":
    main()

    
1 resposta

Olá, Rafaela! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de funções para estruturar o programa, utilizou muito bem o tratamento de entradas inválidas para garantir robustez e ainda compreendeu a importância da interação com o usuário por meio de mensagens claras e pausas que tornam a experiência mais amigável.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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