1
resposta

Verificando itens na despensa

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

    
1 resposta

Olá, Rafaela, como vai?

O código que você desenvolveu está excelente e demonstra um domínio avançado de Python ao utilizar funções e tratamento de exceções com blocos try e except. A lógica para verificar a existência do item na lista e a opção de adicioná-lo dinamicamente foi muito bem implementada, superando os requisitos básicos da atividade com uma estrutura organizada e funcional.

Parabéns pelo excelente exercício e pela dedicação em ir além do proposto. Continue compartilhando seus códigos com a comunidade. O fórum está à disposição.

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