Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Substituição do IF and ELSE por MATCH and CASE

Ola, quando utilizo o código abaixo estou tendo problema. Acredito que seja por alguma configuração entre match and case. Consegue me ajudar?

import os

def exibir_nome_do_programa(): 
    print ('Sabor Express\n')

def exibir_opcoes():
    
    print('1. Cadastrar Restaurante')
    print('2. Listar Restaurante')
    print('3. Ativar Restaurante')
    print('4. Sair\n') 

def finalizar_app():
    os.system('cls')
    print('Finalizando o app')

def opcao_invalida():
    print('Opção Inválida! \n')
    input('Digite uma tecla para voltar ao menu principal')
    main()

def escolher_opcao():
    try:
        opcao_escolhida =int(input('Escolha uma opção: '))

        match opcao_escolhida:

            case 1: print ('Cadastrar Restaurante')
            case 2: print ('Listar Restaurante')
            case 3: print ('Ativar Restaurante')
            case 4: finalizar_app()
            case _: opcao_invalida()
    except:
        opcao_invalida()
def main():
        os.system('cls')
        exibir_nome_do_programa()
        exibir_opcoes()
        escolher_opcao()
        opcao_invalida()
    
if __name__ == '__main__':
    main()

Por exemplo, quando escolho o 2, eu recebo esse retorno na mensagem:


Escolha uma opção: 2 Listar Restaurante Opção Inválida!

Porque ele também mostra o resultado da função de código inválida? Aguardo o retorno.

2 respostas
solução!

Olá Larissa, tudo bem com você?

O comportamento apresentado, onde a mensagem "Opção Inválida!" é apresentada sempre que uma opção válida é escolhida opção 2 por exemplo, está ocorrendo devido à chamada indevida da função opcao_invalida() dentro da função main(), fazendo com que essa função seja executada independente da escolha do usuário na validação match/case.

Para corrigir esse erro, basta apagar a chamada da função opcao_invalida() dentro da função main(), deixando-a como apresentado abaixo:

def main():
    os.system('cls')
    exibir_nome_do_programa()
    exibir_opcoes()
    escolher_opcao()

Abaixo um GIF apresentando a execução e teste do código após a mudança:

GIF apresentando a execução do código postado pela aluna

Após aplicar a mudança descrita acima, salve o arquivo e execute-o novamente.

Após realizar essas mudanças, basta dar continuidade na atividade Listas.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Ah certo! Entendido, muito obrigada.