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_itens = []
def verificar_itens():
while True:
item_deseja_verificar = input("Digite o item que você quer verificar ou 's' para sair: ").strip()
if item_deseja_verificar.casefold() in ["s", "sair"]:
pausa_limpa("Retornando ao menu")
return
try:
item = validar_item(item_deseja_verificar)
except (TypeError, ValueError) as e:
pausa_limpa(f"Entrada inválida: {e}")
continue
if not item in lista_itens:
resposta = input(f"{item} não está na sua lista, deseja adicionar a sua lista (s/n): ").strip()
if resposta.casefold() in ["s", "sim"]:
lista_itens.append(item)
pausa_limpa(f"O item {item} foi adicionado com sucesso.")
continue
if resposta.casefold() in ["n", "nao"]:
pausa_limpa(f"O item {item} não foi adicionado a sua lista.")
continue
else:
pausa_limpa(f"{item} já está na sua lista.")
def mostrar_lista():
if not lista_itens:
print("No momento a lista está vazia.")
pausa_limpa("Retornando ao menu")
return
for i, item in enumerate(lista_itens, start=1):
print(f"{i} - {item}")
pausa_limpa("Retornando ao menu")
return
def menu():
while True:
print("""===========Menu===========
1 - Verificar itens
2 - Ver lista
3 - Sair programa
""")
try:
entrada = int(input("Digite a opção desejada: ").strip())
opcao = validar_opcao(entrada)
except(ValueError, TypeError) as e:
pausa_limpa(f"Entrada inválida: {e}")
continue
if opcao == 1:
pausa_limpa("Opção 1 selecionada")
verificar_itens()
elif opcao == 2:
pausa_limpa("Opção 2 selecionada")
mostrar_lista()
elif opcao == 3:
pausa_limpa("Opção 3 selecionada")
print("Fim do programa")
break
def validar_opcao(opcao: int) -> int:
if not isinstance(opcao, int):
raise TypeError("A opção deve ser um número.")
if opcao not in (1, 2, 3):
raise ValueError("A opção deve estar entre 1 e 3.")
if not opcao:
raise ValueError("A opção não pode estar vazia.")
return opcao
def validar_item(item: str) -> str:
if not isinstance(item, str) or item.isdigit():
raise TypeError("O item deve ser uma string.")
if not item:
raise ValueError("O item não pode estar vazio.")
return item.title()
def main():
menu()
if __name__ == "__main__":
main()