Python计算矩形参数报TypeError: can only concatenate str (not "float")如何解决
错误原因
你遇到的TypeError: can only concatenate str (not "float") to str报错,核心原因是字符串和浮点类型数据不能直接用+运算符拼接。你前面计算面积、周长时都主动用str()把数值计算结果转成了字符串,唯独计算对角线的这行漏掉了对math.sqrt()返回的浮点结果的类型转换。
另外你当前贴出的代码还存在隐藏问题:仅定义了接收宽度的number2,没有定义接收长度的number1,修复完类型问题后运行还会触发NameError,需要提前补上长度输入的逻辑。同时建议把import math放在代码最顶部,符合Python编码规范。
修复方案
你可以任选以下任意一种方案修改对角线打印的代码:
- 方案1:和原有代码风格统一,给计算结果加
str()转换
print("The length of the diagonal: " + str(math.sqrt(number1**2 + number2**2)))
- 方案2:使用Python3.6+支持的f-string写法,更简洁易读,不需要手动做类型转换
print(f"The length of the diagonal: {math.sqrt(number1**2 + number2**2)}")
- 方案3:使用
format()方法实现字符串拼接
print("The length of the diagonal: {}".format(math.sqrt(number1**2 + number2**2)))
完整可运行参考代码
import math # 补上缺失的长度输入逻辑 number1 = int(input(" Enter Length: ")) number2 = int(input(" Enter Width: ")) print("The area of the rectangle: " + str(number1 * number2)) print("The perimeter of the rectangle: " + str(number1 * 2 + number2 * 2)) print(f"The length of the diagonal: {math.sqrt(number1**2 + number2**2)}")
内容的提问来源于stack exchange,提问作者yurrrr
相关产品推荐
相关产品推荐

