1
resposta

opcao 2

tentei listar o restaurante, tentei com o codigo original de base e da opcao invalida

import os

restaurantes = [{'nome':'Prada', 'categoria':'Japanese', 'Atio':False},  
                {'nome':'Pizza', 'categoria':'Pizzaria', 'Ativo':True},    
                {'nome':'Jose', 'categoria':'Jose', 'Ativo':False}]

def exibir_nome_programa():
    print('Fala mundo \n')

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

def finalizar_app():
    exibir_subtitulo('Encerrando\n')
    
def voltar_ao_menu_principal():
    input('\ndigite para voltar ao menu ')
    main()
    
def opcao_invalida():
    print('opção invalida\n')  
    voltar_ao_menu_principal()
    
def exibir_subtitulo(texto):
    os.system('cls')
    print(texto)
    
def cadastrar_novo_restaurante():
    exibir_subtitulo('cadastro novos restaurante \n')
    nome_do_restaurante = input('nome do restaurante: ')
    categoria = input(f'digite o nome da categoria do restaurante {nome_do_restaurante}: ')
    dados_do_restaurante = {'nome':nome_do_restaurante, 'categoria':categoria, 'Ativo':False}
    restaurantes.append(dados_do_restaurante)
    print(f'o restaurante {nome_do_restaurante} foi cadastrado')
    
    voltar_ao_menu_principal()

def listar_restaurantes():
    exibir_subtitulo('Listando restaurantes')

    print(f'{'Nome do restaurante'.ljust(22)} | {'Categoria'.ljust(20)} | Status')
    for restaurante in restaurantes:
        nome_restaurante = restaurante['nome']
        categoria = restaurante['categoria']
        ativo = 'ativado' if restaurante['ativo'] else 'desativado'
        print(f'- {nome_restaurante.ljust(20)} | {categoria.ljust(20)} | {ativo}')

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

        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()
            
    
def main():
    os.system('cls')
    exibir_nome_programa()
    exibir_opcoes()
    escolher_opcao()
        
if __name__ == '__main__':
    main()
1 resposta

Boa tarde Ademir, tudo bem com você?

O comportamento apresentado está acontecendo devido a um pequeno erro de digitação no nome da chave ativo do primeiro restaurante cadastrado na lista restaurantes. No seu código foi escrito Atio (sem o v), o correto é Ativo (com o v). Deixo abaixo essa parte do código já corrigida:

restaurantes = [{'nome':'Prada', 'categoria':'Japanese', 'Ativo':False},  
                {'nome':'Pizza', 'categoria':'Pizzaria', 'Ativo':True},    
                {'nome':'Jose', 'categoria':'Jose', 'Ativo':False}]

Além dessa correção, será necessário corrigir o acesso à chave Ativo na função listar_restaurantes. No if ternário está ocorrendo a tentativa de acesso a chave ativo (com o a em minúsculo) mas, essa chave não existe no dicionário, o correto é Ativo ( com o A em maiúsculo). O código ficará da seguinte forma:

ativo = 'ativado' if restaurante['Ativo'] else 'desativado'

Deixo abaixo um GIF apresentando a execução das correções listadas acima:

GIF apresentando a execução da correção do código do estudante

Após realizar essas correções, salve o arquivo antes de executá-lo.

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