You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:15:02