1
resposta

tentei reproduzir com a lista sem usar o numpy e não consigo o mesmo resultado, pode ajudar? obriagdo

pesos = [106.0, 68.5, 75.0] alturas =[1.9, 1.53, 1.75]

imc = [] for peso in pesos: for altura in alturas: imcs = peso / altura ** 2 imc.append(imcs) print (imc)

1 resposta

Boa noite, Helmut., tudo bom?

Eu entendi que o resultado que você deseja reproduzir é o seguinte:

`In [1]:`
import numpy as np

peso = array([106.0, 68.5, 75.0])
altura = array([1.9, 1.53, 1.75])

IMC = peso / altura ** 2
IMC

`Out [1]:`
array([29.36288089, 29.26224956, 24.48979592])

O seu código está escrito com loops aninhados. Desse jeito, o IMC será calculado utilizando todos os 3 pesos com todas as 3 alturas, produzindo uma lista com 9 resultados:

`In [2]:`
imc = []
for peso in pesos:
  for altura in alturas:
    imcs = peso / altura ** 2
    imc.append(imcs)
print (imc)

`Out [2]:`
[29.363, 45.282, 34.612, 18.975, 29.262, 22.367, 20.776, 32.039, 24.490]

Para obter o mesmo resultado dos arrays numpy, tente varrer as duas listas ao mesmo tempo, usando um único loop for:

`In [3]:`
imc = []
for i in range(len(pesos)):
  imc.append(pesos[i] / (alturas[i] ** 2))
print(imc)

`Out [3]:`
[29.362880886426595, 29.262249562134222, 24.489795918367346]

Também é possível obter o resultado desejado com uma única linha de código Python, usando List comprehensions (ver Aula 4):

`In [3]:`
[pesos[i] / (alturas[i] ** 2) for i in range(len(pesos))]

`Out [3]:`
[29.362880886426595, 29.262249562134222, 24.489795918367346]