import msvcrt
import os, sys
import unicodedata
def habilitar_ansi_windows() -> None:
if os.name == "nt":
os.system("")
def limpar_ultimas_linhas(qtd: int = 1) -> None:
msvcrt.getch()
for _ in range(qtd):
sys.stdout.write("\x1b[1A")
sys.stdout.write("\x1b[2K")
sys.stdout.flush()
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_convidados = ["Rafaela", "Maria", "João", "Flávio"]
def adicionar_convidado() -> None:
while True:
print("==========Adicionando convidados==========")
entrada = input("\nDigite o nome do novo convidado ou 's' para sair: ").strip()
if entrada.casefold() in ["s", "sair"]:
pausa_limpa("Retornando ao menu")
return
try:
nome = validar_string(entrada)
except(ValueError, TypeError) as e:
pausa_limpa(f"Entrada inválida: {e}")
continue
if nome in lista_convidados:
pausa_limpa(f"{nome} já está na lista")
continue
else:
while True:
opcao = input("Deseja adicionar seu convidado ao final da lista ou no meio: ").strip()
try:
opcao_valida = validar_string(opcao)
except (ValueError, TypeError) as e:
print(f"Entrada inválida: {e}")
limpar_ultimas_linhas(2)
continue
if opcao_valida.casefold() in ["final", "final da lista", "fim", "no fim", "ao final"]:
lista_convidados.append(nome)
pausa_limpa(f"O convidado {nome} foi adicionado ao final da lista.")
break
elif opcao_valida.casefold() in ["meio", "no meio"]:
while True:
entrada = input("Digite a posição na qual deseja inserir o convidado: ")
try:
posicao = validar_posicao(entrada)
except(ValueError, TypeError) as e:
print(f"Entrada inválida: {e}")
limpar_ultimas_linhas(2)
continue
lista_convidados.insert(posicao - 1, nome)
pausa_limpa(f"O convidado {nome} foi adicionado a posição {posicao} da lista")
break
break
else:
print("Entrada inválida. Digite 'final' ou 'meio'.")
limpar_ultimas_linhas(2)
continue
def listar_convidados() -> None:
if not lista_convidados:
print("Não há convidados na lista")
pausa_limpa("Retornando ao menu")
return
lista_de_convidados()
pausa_limpa("Retornando ao menu")
return
def lista_de_convidados() -> None:
print("==========Lista de convidados==========")
for i, convidado in enumerate(lista_convidados, start=1):
print(f"{i} - {convidado}")