首页 > 解决方案 > 初学者python,TypeError:+的不支持的操作数类型:'float'和'str'

问题描述

我正在编写一个简短的脚本来计算三个不同个体的 BMI。我还在学习东西,所以没什么花哨的。我得到了我需要的所有数据,并且可以写入大部分内容。不过,我似乎无法完成一件事。尝试以下代码时:

代码:

体重指数计算器

name1 = "X"
height_m1 = 1.7
weight_kg1 = 90

name2 = "Y"
height_m2 = 1.6
weight_kg2 = 100

name3= "Z"
height_m3 = 1.6
weight_kg = 80

上面的代码运行没有错误。

def bmi_calc(name, height_m, weight_kg):
    bmi = weight_kg / height_m **2
    print("BMI: ")
    print(bmi)
    if bmi < 25:
        print("Name:", name+".", "BMI:", bmi+".", name, "is not overweight")
    else:
        print("Name:", name+".", "BMI:", bmi+".", name, "is overweight")

上面的代码运行没有错误。

results1 = bmi_calc(name1, height_m1, weight_kg1)
results2 = bmi_calc(name2, height_m2, weight_kg2)
results3 = bmi_calc(name3, height_m3, weight_kg3)

当我尝试将我的 3 个变量插入上述代码时,它返回以下错误消息:

BMI:  31.14186851211073
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-68-c528c04b0723> in <module>()
----> 1 results1 = bmi_calc(name1, height_m1, weight_kg1)
      2 results2 = bmi_calc(name2, height_m2, weight_kg2)
      3 results3 = bmi_calc(name3, height_m3, weight_kg3)

<ipython-input-66-59d41ff4404c> in bmi_calc(name, height_m, weight_kg)
      5         print("Name:", name+".", "BMI:", bmi+".", name, "is not overweight")
      6     else:
----> 7         print("Name:", name+".", "BMI:", bmi+".", name, "is overweight")

TypeError: unsupported operand type(s) for +: 'float' and 'str'

错误似乎集中在字符串上,但我不明白为什么

标签: pythonpython-3.x

解决方案


print("Name:", name+".", "BMI:", bmi+".", name, "is overweight")

在这一行中,变量bmi是一个浮点数并且"."是一个字符串,因此您可能不会添加、转换bmi为字符串来执行此操作

print(... str(bmi)+"." ...)

类型转换将允许添加两个字符串。


推荐阅读