为何使用for循环计算BMI时会出现‘unsupported operand type’错误?
为什么你的BMI计算代码会出现
unsupported operand type错误? 咱们一步步拆解你代码里的问题,就能明白为啥会报这个类型错误了:
- 循环结构冗余还混淆变量:你写了两层嵌套的
for循环,内层的enumerate循环会直接覆盖外层的person变量,而且根本不需要两层循环,遍历一次person_data就够了。 - 错误地把整个列表当数值运算:
person是person_data里的单个元素,比如它是["张三", 70, 170]这样的列表,你直接写person / ...,相当于让一个列表和数字做除法——Python可不支持这种操作,这就是unsupported operand type错误的核心原因。 - 身高处理和取值全错:首先你用
person_data[0][2]取的是第一个人的身高,不是当前循环中这个人的身高;其次身高单位是厘米,必须转换成米(除以100)才能代入BMI公式,不然算出来的结果会完全偏离实际。
修正后的代码示例
先定义你的二维列表(举个实际例子):
person_data = [ ["张三", 70, 175], ["李四", 60, 160], ["王五", 80, 180] ] BMI = [] # 遍历每一个人的数据 for person in person_data: # 从当前人的数据里提取体重和身高 weight = person[1] height_m = person[2] / 100 # 把厘米转成米 # 计算BMI bmi_value = weight / (height_m ** 2) BMI.append(bmi_value) print(BMI)
如果需要保留姓名和BMI的对应关系,也可以把结果存成元组(还能给BMI保留两位小数):
BMI = [] for person in person_data: name = person[0] weight = person[1] height_m = person[2] / 100 bmi_value = round(weight / (height_m ** 2), 2) BMI.append((name, bmi_value)) print(BMI)
这样运行就不会报错,还能得到正确的BMI结果啦。
内容的提问来源于stack exchange,提问作者zbozon
相关产品推荐
相关产品推荐

