1
resposta

[Bug] Erro no codigo da "opinião do instrutor": BLOCO ELSE NO LOCAL INCORRETO

A ordem do código abaixo apresenta ERRO:

O bloco else está no local incorreto, pois faz parte da verificação se response.status_code foi 200 ou se deu algum erro e não do bloco de criação do arquivo json.

Abaixo fiz comentários no código sobre o erro.

Para finalizar, crie um arquivo .json para cada restaurante:

for nome_do_restaurante, dados in dados_restaurante.items():
    nome_do_arquivo = f'{nome_do_restaurante}.json'
    with open(nome_do_arquivo, 'w') as arquivo_restaurante:
        json.dump(dados, arquivo_restaurante, indent=4)
        
# ERRO: o bloco else faz parte do bloco anterior
# deve ser removido esse bloco else daqui e adicionado no bloco acima, pois esse else serve para ver se o response.status_code foi diferente de 200.
else:
    print(f'O erro foi {response.status_code}')
  • Correção:
if response.status_code == 200:
    dados_json = response.json()
    dados_restaurante = {}
    for item in dados_json:
        nome_do_restaurante = item['Company']
        if nome_do_restaurante not in dados_restaurante:
            dados_restaurante[nome_do_restaurante] = []
        
        dados_restaurante[nome_do_restaurante].append({
            "item": item['Item'],
            "price": item['price'],
            "description": item['description']
        })

# o bloco else está correto aqui, pois faz parte do if response.status_code == 200, reprensantando um erro no status code que nao é igual a 200:

else: 
    print(f'O erro foi {response.status_code}')
1 resposta

Ola thais, valeu demais por compartilhar aqui no fórum! parabens