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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:48:05