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

Duvida if restaurante['ativo']

def alternar_estado_restaurante():
    exibir_subtitulo('ALterando estado do restaurante')
    nome_restaurante = input('Digite o nome do restaurante que deseja alterar o estado: ')
    restaurante_encontrado = False
    
    for restaurante in restaurantes:
        if nome_do_restaurante == restaurante['nome']:
            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('O restaurante não foi encontrado.')
        
        
    voltar_ao_menu_principal()

Desculpa minha ignorância mas não consigo entender como o "if restaurante['ativo']" consegue saber que o valor da chave "ativo" é "True" uma vez que nesse "if" eu só informei a chave e não o valor que eu queria.

2 respostas
solução!

Não se preocupe! A confusão pode ocorrer por causa da maneira como os valores booleanos são tratados em Python. No contexto do código que você forneceu, a expressão if restaurante['ativo'] não verifica explicitamente se o valor da chave 'ativo' é True. Em vez disso, ela verifica se o valor associado à chave 'ativo' é considerado verdadeiro ou falso no contexto de avaliação booleana.

Em Python, os valores booleanos True e False são tratados como 1 e 0, respectivamente, em expressões booleanas. Então, quando você usa if restaurante['ativo'], está efetivamente verificando se o valor associado à chave 'ativo' é considerado verdadeiro.

Se o valor associado à chave 'ativo' for True, a condição será verdadeira, e o bloco de código após o if será executado. Se o valor for False, o bloco de código após o else será executado.

Portanto, o código funciona porque o valor booleano associado à chave 'ativo' é usado diretamente como uma condição em um contexto booleano. Se o valor for True, o restaurante está ativo; se for False, o restaurante está inativo. O código alterna esse valor usando not restaurante['ativo'], invertendo seu estado.

Hmmmm entendi agora! Muito obrigado Carlos!