3
respostas

Faça como eu fiz: dicionários

import os
import msvcrt

def limpar_tela():
    os.system("cls" if os.name == "nt" else "clear")
    
def pausa_limpa(texto):
    print(texto, end="", flush=True)
    voltar = msvcrt.getch()
    limpar_tela()
    
def voltar_menu():
    print("\nVoltar ao menu principal...", end="", flush=True)
    voltar = msvcrt.getch()
    
def exibir_subtitulo(texto):
    limpar_tela()
    linha = '-' * (len(texto) + 4)
    print(linha)
    print(" ", texto)
    print(linha)
    print()

restaurantes = [{"nome":"JSK", "categoria":"Hamburgueria", "ativo": True},
                {"nome":"Spoleto", "categoria":"Massas", "ativo": False}]

def exibir_nome_programa_e_opcoes():
    print("""
░██████╗░█████╗░██████╗░░█████╗░██████╗░  ███████╗██╗░░██╗██████╗░██████╗░███████╗░██████╗░██████╗
██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗  ██╔════╝╚██╗██╔╝██╔══██╗██╔══██╗██╔════╝██╔════╝██╔════╝
╚█████╗░███████║██████╦╝██║░░██║██████╔╝  █████╗░░░╚███╔╝░██████╔╝██████╔╝█████╗░░╚█████╗░╚█████╗░
░╚═══██╗██╔══██║██╔══██╗██║░░██║██╔══██╗  ██╔══╝░░░██╔██╗░██╔═══╝░██╔══██╗██╔══╝░░░╚═══██╗░╚═══██╗
██████╔╝██║░░██║██████╦╝╚█████╔╝██║░░██║  ███████╗██╔╝╚██╗██║░░░░░██║░░██║███████╗██████╔╝██████╔╝
╚═════╝░╚═╝░░╚═╝╚═════╝░░╚════╝░╚═╝░░╚═╝  ╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝╚══════╝╚═════╝░╚═════╝░
1. Cadastrar restaurante
2. Listar restaurante
3. Ativar/desativar restaurante
4. Apagar restaunte
5. Sair
        """)

def cadastrar_restaurantes():
    exibir_subtitulo("Cadastro de novos restaurantes")
    while True:
        nome = input("Digite o nome do restaurante que deseja cadastrar (ou 's'/'sair' para voltar): ").strip()
    
        if nome.lower() in ("s", "sair"):
            break
        if not nome:
            print("Nome vazio não é válido.\n")
            continue

        if any(restaurante["nome"].lower() == nome.lower() for restaurante in restaurantes):
            print(f"\nO restaurante {nome.title()} já está cadastrado.\n")
            pausa_limpa("Continuar...")
            continue

        while True:
            categoria = input(f"\nDigite a categoria do restaurante {nome.title()} (ex.: Hamburgueria, Massas): ").strip()
            if not categoria:
                print("Categoria vazia não é válida\n")
                continue
            else:
                break

        restaurantes.append({
            "nome": nome.title(),
            "categoria": categoria.title(),
            "ativo": False
        })
        print(f"\nRestaunte {nome.title()} cadastrado com sucesso!\n")

        pausa_limpa("Continuar...")
        
    voltar_menu()

def listar_restaurantes():
    exibir_subtitulo("Restaurantes cadastrados")
    if not restaurantes:
        print("Nenhum restaurante cadastrado.")
    else: 
        print(f"  {"Restaurante".ljust(25)}{"Categoria".ljust(23)}{"Status"}")
        for i, restaurante in enumerate(restaurantes, start = 1):
            ativo = "ativo" if restaurante["ativo"] else "desativado"
            #print(f"Restaurante {i}. Nome: {restaurante["nome"].ljust(20)} | Categoria: {restaurante["categoria"].ljust(20)} | Estado atual: {ativo}")
            print(f"{i}. {restaurante["nome"].ljust(20)} | {restaurante["categoria"].ljust(20)} | {ativo}")

    voltar_menu()

def alternar_estado_restaurantes():
    exibir_subtitulo("Ativar/Desativar Restaurantes")
    while True:
        nome = input("Digite o nome do restaurante que deseja ativar/desativar (ou 's'/'sair' para voltar): ").strip()

        if nome.lower() in ("s", "sair"):
            break
        if not nome:
            print("Nome vazio não é válido.\n")
            continue

        for restaurante in restaurantes:
            if nome.lower() == restaurante["nome"].lower():

                ativo = "ativado" if restaurante["ativo"] else "desativado"

                print(f"\nRestaurante {nome.title()} está {ativo} no momento.")

                resposta = input("\nDeseja mudar o estado ('s' ou 'n'): ").strip().lower()

                if resposta in ("s", "sim"):

                    restaurante["ativo"] = not restaurante["ativo"]
                    ativo = "ativado" if restaurante["ativo"] else "desativado"

                    print(f"\nO restaurante {nome.title()} agora está {ativo}.\n")

                else:
                    print("\nSem alterações.\n")

                break
        else:
            print("Restaurante não cadastrado.\n")

        pausa_limpa("Continuar...")
                
    voltar_menu()

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
3 respostas

Segunda parte:

def apagar_restaurantes():
    exibir_subtitulo("Apagar restaurantes")
    while True:
        nome = input("Digite o nome do restaurante que deseja apagar (ou 's'/'sair' para voltar): ").strip()

        if nome.lower() in ("s", "sair"):
            break
        if not nome:
            print("Nome vazio não é válido\n")
            continue

        for restaurante in restaurantes:
            if nome.lower() == restaurante["nome"].lower():
                ativo = "ativo" if restaurante["ativo"] else "desativado"

                resposta = input(f"\nO restaurante {nome.title()} está {ativo} no momento, tem certeza que quer remover ('s' ou 'n'): ")

                if resposta in ["sim", "s"]:

                    restaurantes.remove(restaurante)
                    print(f"\nRestaurante {nome.title()} removido\n")
                
                else:
                    print("\nSem alterações.\n")

                break

        else:
            print("\nRestaurante não cadastrado\n")

        pausa_limpa("Continuar...")

    voltar_menu()


def finalizar_app():
    exibir_subtitulo("Encerrando o app...")

def escolher_op():
        try:
            opcao_escolhida = int(input("Digite uma opção: "))
            if opcao_escolhida not in range(1, 6):
                raise ValueError
        except ValueError:
            exibir_subtitulo("Opção inválida. Digite um número (1 a 5).")
            voltar_menu()
            return True
        
        match opcao_escolhida:
            case 1:
                cadastrar_restaurantes()
                return True
            case 2:
                listar_restaurantes()
                return True
            case 3:
                alternar_estado_restaurantes()
                return True
            case 4:
                apagar_restaurantes()
                return True
            case 5:
                finalizar_app()
                return False

def main():
    while True:

        limpar_tela()

        exibir_nome_programa_e_opcoes()

        if not escolher_op():
            break

if __name__ == "__main__":
    main()

Oi, Rafaela! Como vai?

Agradeço por compartilhar.

Seu projeto tá incrível e muito bem-estruturado. É uma aplicação completa, com um ótimo cuidado na experiência da pessoa usuária, como a limpeza da tela e os menus organizados. A forma como você separou cada funcionalidade em sua própria função (cadastrar_restaurantes, listar_restaurantes, etc.) e validou as entradas de dados demonstra um excelente domínio dos conceitos.

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

Oi Rafaela.
Isso está realmente incrível.
Obrigado demais por compartilhar.
Seu app está quase pronto!
Só falta subir para a playstore.
Continue nesse ritmo...
E compartilha sua evolução com a gente.
Bons estudos.