Странный вывод, использующий для l oop для вычисления bmi - PullRequest
0 голосов
/ 18 июня 2020

Я получаю странный результат и не знаю почему. Я использую лабораторию Google. Просто не могу понять, зачем 7 раз добавлять bmi в конец каждого вложенного списка. Мне нужно добавить его только один раз. Я сократил вывод, чтобы это не стена текста.

Список

person_data = [
         ['John', 84.5, 184], 
         ['Ryan', 81.8, 177], 
         ['Bobby', 86.1, 190], 
         ['Pete', 92.2, 188], 
         ['Esther', 69.6, 159],
         ['Jane', 72.0, 166],
         ['Samantha', 51.3, 162]
]

Для l oop

for i, person in enumerate(person_data):
  for value in person_data:
    weight = person[2]
    height = person[1]
    bmi = weight / height**2
    person.append(bmi) 

person_data

Вывод при запуске

[['John',
  84.5,
  184,
  0.025769405833129092,
  0.025769405833129092,
  0.025769405833129092,
  0.025769405833129092,
  0.025769405833129092,
  0.025769405833129092,
  0.025769405833129092],
 ['Ryan',
  81.8,
  177,
  0.026452496099377696,
  0.026452496099377696,
  0.026452496099377696,
  0.026452496099377696,
  0.026452496099377696,
  0.026452496099377696,
  0.026452496099377696],

Ответы [ 3 ]

1 голос
/ 18 июня 2020

Удалите этот внутренний l oop и перечислите:

for person in person_data:
    weight = person[2]
    height = person[1]
    bmi = weight / (height ** 2)
    person.append(bmi)

Я думаю, вам, возможно, придется отрегулировать единицы, чтобы получить правильные числа ИМТ?

0 голосов
/ 18 июня 2020

Ваша функция person.append (bmi) находится внутри вложенной для l oop функции, когда это не обязательно. Если вы удалите один отступ, он не будет добавлять bmi столько раз. Вы хотите добавить bmi только один раз на человека, поэтому он действительно должен быть в пределах первого для l oop, а не в том, который выполняет расчет.

0 голосов
/ 18 июня 2020

Секунда для l oop не нужна, потому что одно и то же значение добавляется несколько раз.

for person in person_data:
    weight = person[2]
    height = person[1]
    bmi = weight / height**2
    person.append(bmi) 
...