1
resposta

[Dúvida] Codigo python não altera estado de False para True , não apresenta mensagem de erro , alguém sabe como corrigir?

import os

restaurantes = [{'nome':'Kony', 'categoria':'japonesa', 'ativo':'False'},
                {'nome':'Coco Banbu', 'categoria':"happyhour", 'ativo':'True'},
                {'nome':'Canela', 'categoria':'mexicana', 'ativo':'False'},]

def exibir_nome_do_programa():

    print("""
      
        
░█▀▀▀█ █▀▀█ █▀▀▄ █▀▀█ █▀▀█   ░█▀▀▀ █─█ █▀▀█ █▀▀█ █▀▀ █▀▀ █▀▀ 
─▀▀▀▄▄ █▄▄█ █▀▀▄ █──█ █▄▄▀   ░█▀▀▀ ▄▀▄ █──█ █▄▄▀ █▀▀ ▀▀█ ▀▀█ 
░█▄▄▄█ ▀──▀ ▀▀▀─ ▀▀▀▀ ▀─▀▀   ░█▄▄▄ ▀─▀ █▀▀▀ ▀─▀▀ ▀▀▀ ▀▀▀ ▀▀▀
      
      """)


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


def voltar_ao_menu_principal():
    input('\nDigite uma tecla 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)
    print


def cadastrar_novo_restaurante():
    exibir_subtitulo('Cadastro de novos restaurantes')
    nome_do_restaurante = input('Digite o nome do restaurante que deseja cadastrar: ')
    categoria = input(f'Digite o nome da categoria do restaurante {nome_do_restaurante}: ')
    dados_do_restaurante = {f'nome':nome_do_restaurante, 'categoria':categoria, 'ativo':False}
    restaurantes.append(dados_do_restaurante)
    print(f'O restaurante {nome_do_restaurante} foi cadastrado com sucesso!\n')
    
    voltar_ao_menu_principal()

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

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

    voltar_ao_menu_principal()


def exibir_subtitulo(subtitulo):
    print(f'\n{subtitulo}\n')

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 i, restaurante in enumerate(restaurantes):
        if nome_restaurante == restaurante['nome']:
            restaurante_encontrado = True
            # Alternar o estado do restaurante
            restaurantes[i]['ativo'] = not restaurantes[i]['ativo']
            mensagem = f'O restaurante {nome_restaurante} foi ativado com sucesso' if restaurantes[i]['ativo'] else f'O restaurante {nome_restaurante} foi desativado com sucesso'
            print(mensagem)
            break  # Interrompe o loop após encontrar o restaurante
    
    if not restaurante_encontrado:
        print('O restaurante não foi encontrado.')

    voltar_ao_menu_principal()




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

        if opcao_escolhida == 1:
            cadastrar_novo_restaurante()
        elif opcao_escolhida == 2:
            listar_restaurantes()
        elif opcao_escolhida == 3:
            alternar_estado_restaurante()
        elif opcao_escolhida == 4:
            finalizar_app()
        else:
            opcao_invalida()
    except:
        opcao_invalida()


def finalizar_app():
    exibir_subtitulo('Finalizando o app')


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


if __name__ == '__main__':
    main()
1 resposta

Olá Rosana, sou novo na comunidade. Pude notar que na parte do dicionário do restaurante, na chave de ativo, você utiliza o True e False como strings, tente transformar em boolean apagando as aspas simples para ver se funciona