首页 > 解决方案 > 使用此 for 循环计算体重指数时,为什么我会得到不受支持的操作数类型?

问题描述

提前感谢您的耐心等待。我已经有一个二维列表 = person_data。每个元素都有三个索引:名称、体重、身高,按顺序排列。身高以厘米为单位,体重以公斤为单位。我无法创建一个 for 循环来计算体重指数:ℎ()/ℎ()2。下面的for循环:

for person in person_data:
  for i, person in enumerate(person_data):
    BMI.append(person / person_data[0][2] ** 2)

print(BMI)

标签: python

解决方案


如果我正确地回答了您的问题,那么您person_data是一个包含有关人员信息的列表,该列表也是一个包含 3 个元素(姓名、体重、身高)的列表。然后不需要使用两个循环。只需打开内部列表即可获得体重和身高。就这样做——

BMI=[]
for person in person_data:
    # name can be ignored in this case
    _, weight, height = person
    BMI.append(weight / height ** 2)

print(BMI)

在您的代码中,外循环person和内循环一样。所以外循环的变量被内循环的变量person所遮蔽。person此外,由于您没有使用元素的索引,因此无需使用enumerate().

如果您更喜欢列表理解,那么 -

BMI = [person[1]/person[2]**2 for person in person_data]

推荐阅读