python初学者,TypeError:不支持+:“float”和“str”的操作数类型

2024-09-28 22:04:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个简短的脚本来计算三个不同个体的体重指数。我还在学东西,所以没什么特别的。我得到了我需要的所有数据,并且可以在大部分内容中写入。但我似乎一件事都做不到。尝试以下代码时:

代码:

体重指数计算器

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'

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


Tags: 代码nameis错误calcprintbmiheight
2条回答

只需将浮点值转换为字符串,就可以编写相同的内容

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:", str(bmi) + ".", name, "is not overweight")
else:
    print("Name:", name + ".", "BMI:", str(bmi) + ".", name, "is overweight")
print("Name:", name+".", "BMI:", bmi+".", name, "is overweight")

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

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

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

相关问题 更多 >