3
respostas

não vai de jeito maneira kkk

estou tentando chegar ao resultado e simplesmente, nem copiando as respostas ele está gerando a resposta esperada, na verdade ele processa e não gera nenhuma saída. O que estou fazendo de errado?

dados = { 'Crossfox': {'km': 35000, 'ano': 2005}, 'DS5': {'km': 17000, 'ano': 2015}, 'Fusca': {'km': 130000, 'ano': 1979}, 'Jetta': {'km': 56000, 'ano': 2011}, 'Passat': {'km': 62000, 'ano': 1999} }

dados = {
    'Crossfox': {'km': 35000, 'ano': 2005}, 
    'DS5': {'km': 17000, 'ano': 2015}, 
    'Fusca': {'km': 130000, 'ano': 1979}, 
    'Jetta': {'km': 56000, 'ano': 2011}, 
    'Passat': {'km': 62000, 'ano': 1999}
}
def km_media(dataset, ano_atual):
    for item in dataset.items():
        result = item[1]['km'] / (ano_atual - item[1]['ano'])
        print(result)
3 respostas

Oi Carlos! Tudo bem contigo?

Sua função está certinha. Aparentemente você não está fazendo nada de errado, acredito que você apenas tenha esquecido de chamar a função :)

Quando fazemos uma função, precisamos chamá-la e passar os valores dos parâmetros para que seu código seja executado. Observe:

# função
def km_media(dataset, ano_atual):
    for item in dataset.items():
        result = item[1]['km'] / (ano_atual - item[1]['ano'])
        print(result)

# chamando a função e passando os dados
km_media(dados, 2019)

Tenta fazer dessa forma para ver se funciona certinho.

Qualquer dúvida me avisa aqui que vamos conversando, tá bom?

Bons estudos!

Era isso mesmo kkkk muito obrigado.

uma outra dúvida:

eu não entendi a relação de 'ano_atual' na função e o ano numérico propriamente dito abaixo. porque na função não posso colocar direto o número do ano? por exemplo:

def km_media(dados, 2019):
    for item in dados.items():
        result = item[1]['km'] / (2019 - item[1]['ano'])
        print(result)

km_media(dados, 2019)

ou 

def km_media(dados, ano_atual):
    for item in dados.items():
        result = item[1]['km'] / (ano_atual - item[1]['ano'])
        print(result)

# chamando a função e passando os dados
km_media(dados, ano_atual)

hahaha que bom que resolveu!

Em relação a sua segunda dúvida, bora entender rapidinho como funciona uma função:

Quando criamos uma função que recebe alguns parâmetros, comodef km_media(dados, ano_atual), esses parâmetros existem apenas dentro dessa função e, a princípio, eles não possuem nenhum valor. Para que eles tenham algum valor, nós devemos chamar a função e, ao chamá-la, passar o valor que desejamos que sejam atribuídos a esses parâmetros. Observe:

No exemplo acima estamos fazendo justamente isso. Quando chamamos km_media(dados, 2019) estamos passando os dados (que estão fora da função) para a variável dados (que existe dentro da função) e estamos atribuindo o valor 2019 para a variável ano_atual.

Dessa forma, nossa função fica mais genérica, ou seja, é possível passarmos diversos valores para ela e fazermos diferentes cálculos, por exemplo:

# exemplo 1
km_media(dados, 2019) # passando o 2019 para a variável ano_atual

# exemplo 2
km_media(dados, 2018) # passando o 2018 para a variável ano_atual

# exemplo 3
km_media(dados, 2015) # passando o 2015 para a variável ano_atual

Para cada uma dessas chamadas de função acima estamos passando um novo valor para a variável ano_atual que existe dentro da função km_media. Então, para cada uma dessas chamadas obteremos resultados diferentes.

E essa possibilidade de fazer o mesmo cálculo com diferentes valores é justamente um dos intuitos de utilizar funções. Para que não precisemos ficar repetindo código, mas apenas passar novos valores.

Sendo assim, se você colocar o número do ano direto na função, como por exemplo:

def km_media(dados):
    for item in dados.items():
        result = item[1]['km'] / (2019 - item[1]['ano'])
        print(result)

Você não terá mais a possibilidade de utilizar essa função para calcular a km_media, para diferentes anos, apenas para o ano de 2019.

Espero que tenha conseguido tirar sua dúvida :)

Se tiver ficado com alguma dúvida me avisa aqui que a gente tenta entender melhor, belezinha?

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software