1
resposta

o meu código esta dando erro

import os

restaurantes = [{'nome':'Praca', 'categoria' : 'Japonesa' , 'ativo':False},
{'nome':'Pizza Suprema' , 'categoria' :'Italiana ' ,'ativo':True },
{'nome':'Cantina','categoria':'Italiano','ativo':False }]

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

def exibir_opcoes():
print('1. Cadastra restaurante')
print('2. Listar restaurantes')
print('3. Ativar restaurante')
print('4. Sair ')

def finalizar_app():
exibir_subtitulo('Encerando o programa\n')

def voltar_ao_menu_principal():
input('\nDigitar uma tecla para voltar ao menu principaln ')

def opcao_invalida():
print('Opcao invalida\n')
voltar_ao_menu_principal()

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

def cadastrar_novo_restaurante():
exibir_subtitulo('cadastro de novos restaurantes/n')
nome_do_restaurante = input('Digite o nome do restaurante que deseja cadastra:')
restaurantes.append(nome_do_restaurante)
print(f'o restaurante {nome_do_restaurante}foi cadastrado com sucesso ')

voltar_ao_menu_principal()

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

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

voltar_ao_menu_principal()

def escolher_opcao():
try:
opcao_escolhida = int(input('Escolha uma opção de 1 ate 4: '))
# opcao_escolhida = int(opcao_escolhida)

    if opcao_escolhida == 1:
        cadastrar_novo_restaurante()
    elif opcao_escolhida == 2:
        listar_restaurantes()
    elif opcao_escolhida == 3:
        print('Ativar restaurantes')
    elif opcao_escolhida == 4:
        finalizar_app()
    else:
        opcao_invalida()
except:
    opcao_invalida()
    

def main():
os.system('clear')
exibir_nome_do_programa()
exibir_opcoes()
escolher_opcao()
if name == 'main':
main()

1 resposta

Oi, Marianny! Como vai?

Notei que o erro está ligado principalmente à indentação das funções e também ao uso incorreto de name == 'main', que deveria ser __name__ == '__main__'. Outro ponto importante é no cadastro de restaurante, onde você adiciona apenas uma string, mas sua lista espera um dicionário com nome, categoria e ativo.

Uma dica interessante para o futuro é usar a criação correta de dicionários ao adicionar novos itens:


novo_restaurante = {'nome': nome, 'categoria': 'categoria', 'ativo': False}
restaurantes.append(novo_restaurante)

Esse código cria um dicionário com três informações e o adiciona corretamente à lista, mantendo o padrão usado no restante do programa.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!