1
resposta

No meu caso a lógica de ativar e desativar funciona, porém o a mensagem "restaurante não encontrado" aparece em todos os casos

Ele realmente ativa e desativa, porem a mensagem "restaurante não encontrado" não funciona da maneira correta:

Código:

import os

restaurantes = [{'nome':'Pizzaria Pedroso', 'categoria':'italiana', 'ativo':True}, {'nome':'Hamburgueria Netão', 'categoria':'Hamburgueria', 'ativo': False}]

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

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

def resetar_opcoes(): input('\n Digite uma tecla para voltar ao menu principal: ') main()

def exibir_subtitulo(texto): os.system('cls') print(texto)

def cadastrar_restaurante(): exibir_subtitulo('Cadastro de restaurantes \n')

nome_restaurante = input('Digite o nome do restaurante a ser cadastrado: ')
categoria_restaurante = input(f'Digite a categoria do restaurante {nome_restaurante}: ')

dados_restaurante = {'nome': nome_restaurante, 'categoria': categoria_restaurante, 'ativo': False}
restaurantes.append(dados_restaurante)

print(f'{nome_restaurante} foi cadastrado com sucesso')
resetar_opcoes()

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

for restaurante in restaurantes:
    nome_restaurante = restaurante['nome']
    restaurante_ativo = restaurante['ativo']
    categoria_restaurante = restaurante['categoria']
    print(f'- {nome_restaurante} | {categoria_restaurante} | {tratamento_palavra_ativo(restaurante_ativo)}')

resetar_opcoes()

def ativar_restaurante(): exibir_subtitulo('Alterando status do restaurante') nome_restaurante = input('Digite o nome do restaurante em que deseja ativar/desativar: ') restaurante_encontrado = False for restaurante in restaurantes: if restaurante['nome'] == nome_restaurante: restaurante_encontrado == True restaurante['ativo'] = not restaurante['ativo'] mensagem = f'O restaurante {nome_restaurante} foi ativado com sucesso!' if restaurante['ativo'] else f'O restaurante {nome_restaurante} foi desativado com sucesso!' print(mensagem)

if not restaurante_encontrado:
    print('Restaurante não encontrado!')

resetar_opcoes()

def tratamento_palavra_ativo(ativo): if ativo == True: return 'Ativo' else: return 'Desativado'

def finalizar_app(): exibir_subtitulo('Finalizando app.. \n')

def opcao_invalida(): print('Opção inválida\n') resetar_opcoes()

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

    print(f'Você escolheu a opção {opcao_escolhida}')

    if opcao_escolhida == 1:
        cadastrar_restaurante()
    elif opcao_escolhida == 2:
        listar_restaurantes()
    elif opcao_escolhida == 3:
        ativar_restaurante()
    elif opcao_escolhida == 4:
        finalizar_app()
except:
    opcao_invalida()

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

if name == 'main': main()

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Parece que o problema está na lógica usada para verificar se o restaurante foi encontrado. No seu código, você está usando == ao invés de = para atribuir um valor à variável restaurante_encontrado, o que está impedindo a alteração correta da variável. Além disso, a indentação e a estrutura do seu código precisam de alguns ajustes.