ИМТ расчет в Python неверный результат - PullRequest
0 голосов
/ 07 ноября 2019

Мне нужно создать расчет ИМТ для людей из моего списка

patients = [[70, 1.8], [80, 1.9], [150, 1.7]]

и теперь моя функция:

def calculate_bmi(weight, height):
    return weight / (height ** 2)

for patient in patients:
    weight, height = patients[0]
    bmi = round(weight/ (height * height), 1)
    print("Patient's BMI is: %f" % bmi)

она показывает мне результат первого человека [0] три раза,Я знаю, что у меня есть значение от первого лица в функции. Во-вторых, как уменьшить значение ИМТ до одной цифры после десятичной точки, например, 21,6

Patient's BMI is: 21.600000
Patient's BMI is: 21.600000
Patient's BMI is: 21.600000

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

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Вам нужно изменить несколько вещей в вашем коде. Когда вы перебираете список patients, вам нужно присвоить weight, height = patient[0],patient[1]

. Просто проверьте код ниже:

for patient in patients:
     weight, height = patient[0],patient[1]
     bmi = round(weight/ (height * height), 1)
     print("Patient's BMI is: ", bmi)

Также удалите %f из вашего print. функция для отображения только одной цифры после десятичной точки.

0 голосов
/ 07 ноября 2019

Вы постоянно устанавливаете вес и рост для первого элемента в списке пациентов, используя weight, height = patients[0];Имейте в виду, что цикл for выполняет итерацию по всем пациентам в списке, поэтому вы можете просто использовать переменную пациента, как показано ниже

def calculate_bmi(weight, height):
    return weight / (height ** 2.0)


for patient in patients:
    weight, height = patient
    bmi = round(weight/ (height * height), 1)
    print("Patient's BMI is: %f" % bmi)
...