1
resposta

[Sugestão] Solução do bug da opção invalida

Salve devs! Eu estava enfrentando o mesmo problema já relatado por outros alunos aqui no fórum e nenhuma das soluções funcionou comigo. Ao selecionar a opção 2 o programa printava "Listando Restaurantes" e depois executava a função "opcao_invalida()". Consegui solucionar trocando o if da função "opcao_escolhida" por um match, vou deixar aqui o código bugado e o corrigido. Espero ter ajudado, eu já estava com sangue nos olhos por não conseguir resolver e xingando o ChatGPT por ele dizer que o código estava correto ksksksk. Abraço! Código Bugado

def listar_restaurantes():
    os.system('clear')
    print('Listando Restaurantes.\n')
    for restaurante in restaurantes:
        nome_restaurante = restaurante['nome']
        categoria = restaurante['categoria']
        ativo = restaurante['ativo']
        print(f' - {nome_restaurante} | {categoria} | {ativo}\n')
    voltar_menu_inicial()

def opcao_escolhida():
    try:
        opcao_escolhida = int(input('Escolha uma opção:\n'))
        if opcao_escolhida == 1:
            cadastrar_novo_restaurante()
        elif opcao_escolhida == 2:
            listar_restaurantes()
        elif opcao_escolhida == 3:
            print('Ativar Restaurante.')
        elif opcao_escolhida == 4:
            finalizar_app()
        else:
            opcao_invalida()
    except:
        opcao_invalida()

Código Corrigido

def listar_restaurantes():
    os.system('clear')
    print('Listando Restaurantes.\n')
    for restaurante in restaurantes:
        nome_restaurante = restaurante['nome']
        categoria = restaurante['categoria']
        ativo = restaurante['ativo']
        print(f' - {nome_restaurante} | {categoria} | {ativo}\n')
    voltar_menu_inicial()

def opcao_escolhida():
    try:
        opcao_escolhida = int(input('Escolha uma opção:\n'))
        match opcao_escolhida:
            case 1:
                cadastrar_novo_restaurante()
            case 2:
                listar_restaurantes()
            case 3:
                print('Ativar Restaurante.\n')
            case 4:
                finalizar_app()
            case _:
                opcao_invalida()
    except:
          opcao_invalida()
1 resposta

Oi, José! Tudo bem?

É ótimo saber que você conseguiu resolver o problema que estava enfrentando, obrigada por ter compartilhado a solução encontrada com a nossa comunidade! A substituição do if pelo match é uma abordagem moderna e elegante que foi introduzida no Python 3.10 e pode tornar o código mais legível e fácil de manter.

A estrutura match funciona de forma semelhante a uma instrução switch em outras linguagens de programação e é muito útil para lidar com múltiplas condições, como no caso de escolha de opções do menu. Além disso, o uso de case _: para lidar com casos não especificados (como uma opção inválida) é uma prática excelente para garantir que todas as possibilidades sejam consideradas.

Espero que esteja gostando do curso! Continue explorando e utilizando novas funcionalidades do Python para aprimorar suas aplicações. Caso tenha ficado alguma dúvida em relação ao curso ou atividade, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!