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

Problemas para somar variáveis

Tentei compilar o código abaixo importando os dados de um arquivo .ndjson, com objetivo de conseguir somar todos os valores das vendas (revenue). Porém, após diversas tentativas, não consegui extrair o resultado correto no último print. Como poderia resolver isso?

import ndjson

with open('ecommerce-events.ndjson') as f:
    data = ndjson.load(f)

for information in data:

    eT = information['eventType']

    if eT == 'transaction':

        for orderItem in information['orderItems']:

            transaction = round((orderItem['quantity'] * orderItem['price']), 2)
            print(transaction)
            revenue += transaction
        print(revenue)

Se necessário para melhor entendimento posso compartilhar o arquivo JSON em meu GitHub.

6 respostas

Olá Gustavo, você poderia compartilhar o arquivo JSON aqui ou em algum link para fazer o download e testarmos aqui?

Olá Gustavo, seu código apenas precisa definir a variável revenue. Antes do primeiro foracrescente revenue=0.

Fora isso, tudo parece funcionar. Qual o resultado que você esperava no último print()?

Deveria imprimir o somatório do produto dos preços por quantidade, para cada um dos items. Porém quando tento imprimir isso, ele retorna todos os preços por quantidade individualmente.

Também tentei salvar o resultado de cada loop do for em um array, para somar posteriormente, porém não funcionou.

import ndjson

with open('ecommerce-events.ndjson','r', encoding="utf-8") as f:
    data = ndjson.load(f)

for information in data:

    eT = information['eventType']

    if eT == 'transaction':
        items_values = []
        for item in information['orderItems']:
            quantity = item['quantity']
            price = item['price']
            transaction = round((price * quantity), 2)
            items_values.append(transaction)
        print(items_values)

Grato pela ajuda.

solução!

Olá Gustavo, em que local você inicializou a variável revenue?

Eu rodei o seu código. A única diferença foi que inicializei a variável revenue com valor 0 (zero) antes do primeiro for e funcionou:

import ndjson

with open('ecommerce-events.ndjson') as f:
    data = ndjson.load(f)

revenue = 0

for information in data:

    eT = information['eventType']

    if eT == 'transaction':

        for orderItem in information['orderItems']:

            transaction = round((orderItem['quantity'] * orderItem['price']), 2)
            print(transaction)
            revenue += transaction
        print(revenue)

Bom, muito obrigado! Fiquei batendo cabeça com essa questão tentando de diversas formas.