Python入门:计算BMI时将输入字符串转int触发报错如何解决?
报错原因
- 核心错误出在
height*height这行运算:input()函数获取的用户输入默认是字符串类型,字符串仅支持和整数相乘实现内容重复,不支持两个字符串相乘,因此触发类型错误。 - 除此之外代码还存在两个隐藏问题:
- 带小数点的字符串(如
"5.9")无法直接通过int()转换,会额外抛出ValueError - 最终print语句中,数值类型的BMI计算结果不能直接和字符串用
+拼接,同样会触发类型错误
- 带小数点的字符串(如
修复方案
修复逻辑:先把输入的身高、体重转成浮点型,再用round()函数对身高做四舍五入得到你预期的整数值,计算BMI后用格式化方法输出结果即可。
修复后代码如下:
print("Today we are going to calculate your BMI") weight = input("What is your weight? ") height = input("What is your height? ") # 输入先转浮点型再处理 weight_float = float(weight) # 5.9四舍五入得到整数6 height_rounded = round(float(height)) bmi = weight_float / (height_rounded ** 2) # 格式化输出,保留2位小数可读性更高 print(f"Congratulations your BMI is {bmi:.2f}")
内容的提问来源于stack exchange,提问作者mstvalplyr69
相关产品推荐
相关产品推荐

