Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

calcular a km média dos veículos usando listas.

Esse primeiro jeito que fiz deu certo, só que gostaria de saber onde poderia arrumar meu segundo código para realizar o mesmo calculo usando 1 for para varrer a lista de anos e outro for para a lista de km.

Ele começa certo, varre a primeira idade e a primeira Km certa, só que quando uso a função "break", ele finaliza o laço aninhado mais interno e da continuidade ao laço da idade me dando o valor certo de km. O problema começa ai, ele sempre me entrega a primeira "km 44410", tem algum meio de arrumar isso?

Sei que poderia usar a biblioteca numpy para realizar de forma mais fácil o código, mas estou querendo dar uma praticada na lógica de programação. Segue em anexo os dois códigos.

km = [44410., 5712., 37123., 0., 25757.]
anos = [2003, 1991, 1990, 2019, 2006]

km_médio = []
i=0
for lista in anos:
    idade = 2019 - lista
    print (idade)
    if i <= len(km):
        if idade !=0 and km[i] !=0:
            km_média = km[i] / idade
            km_médio.append(km_média)
            i+=1
        else:
            km_média = 0
            km_médio.append(km_média)
            i+=1


print(km_médio)
km = [44410., 5712., 37123., 0., 25757.]
anos = [2003, 1991, 1990, 2019, 2006]

km_médio = []

for lista in anos:
    idade = 2019 - lista
    print(idade)
    for km_1 in km:
        print("km", km_1)
        if idade != 0 and km_1 != 0:
            km_média = km_1 / idade
            print(km_média)
            km_médio.append(km_média)
            break
        else:
            km_média = 0
            print(km_média)
            km_médio.append(km_média)
            break
print(km_médio)
1 resposta
solução!

Ola João,

No seu segundo exemplo vai ter que utilizar alguma maneira para identificar qual o km para cada ano (no primeiro exemplo é utilizado o i), para saber qual o km correto em cada execução do for e evitar ser calculado utilizando sempre o primeiro km (44410) como você percebeu.

No python sempre vai ter uma função pronta para te ajudar, nesse caso acredito que a função zip vai ser útil. Esse função permite que você use o for com mais de uma lista de um vez só.

Olha se esse outro exemplo te ajuda:

km = [44410., 5712., 37123., 0., 25757.]
anos = [2003, 1991, 1990, 2019, 2006]

km_medio = []

for ano, km in zip(anos, km):
  idade = 2019 - ano

  if idade != 0 and km != 0:
    media = km / idade
  else:
    media = 0

  km_medio.append(media)

print(km_medio)
# Resultado
[2775.625, 204.0, 1280.103448275862, 0, 1981.3076923076924]

Espero ter ajudado, qualquer dúvida é só falar.

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