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

Dúvida na função 'return'

Segue a solução do problema com o uso da função "return" conforme exercício:

def km_media(dataset, ano_atual):
    result = {}
    for item in dataset.items():
        media = item[1]['km'] / (ano_atual - item[1]['ano'])
        result.update({item[0]: media})

    return result

Contudo, nosso colega de estudo, Maximiliano Meyer, nos ofereceu uma alternativa de resolução conforme segue:

def km_media(dataset, ano_atual):
    result = {}
    for item in dataset.items():
        media = item[1]['km'] / (ano_atual - item[1]['ano'])
        result[item[0]] = media
    print(result)

O que eu gostaria de entender é por que na solução alternativa não foi preciso utilizar a função "return" no final?

ps. Esses fóruns ajudam bastante! Muito bom!

2 respostas
solução!

Olá, Flávio, tudo bem?

O que o aluno Maximiliano fez de diferente e também apresenta uma solução em relação ao gabarito é o uso de result[item[0]] = media ao invés de result.update({item[0]: media}).

Em ambos os casos conseguimos chegar na mesma solução, criando um dicionário com a chave sendo o nome do carro e o valor sendo a quilometragem média de cada um deles.

Entretanto, ele se equivocou em não retornar o result através de return result, que era um dos pedidos na questão. E, na verdade, optou apenas por imprimir na tela o dicionário criado dentro da função.

Se quiséssemos, no caso dele, utilizar o dicionário result fora da função não seria possível, pois ele existiria apenas dentro de nossa função km_media. Por isso, precisamos utilizar o return result, para que esse dicionário seja passado para uma variável fora da função, como por exemplo:

// Escopo da função km_media (solução de Maximiliano ajustada)
def km_media(dataset, ano_atual):
    result = {}
    for item in dataset.items():
        media = item[1]['km'] / (ano_atual - item[1]['ano'])
        result[item[0]] = media

    return result

// Passando o dicionário que foi retornado pelo 'return result' para a variável km_media_2019
km_media_2019 = km_media(dados, 2019)

Espero que tenha te ajudado essa explicação!

Forte abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Muito bem explicado! Gratidão!