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!