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()