学习笔记《python语言程序设计》 错误提示not supported between instances of ‘complex‘ and ‘int‘

博客作者在学习《Python语言程序设计》时遇到一个错误,提示'not supported between instances of 'complex' and 'int'。通过调试,作者发现问题是由于使用了复数和整数做运算导致的。通过打印变量`disDigit`,作者发现其值为一个复数。修正公式后,问题得到解决。作者分享这一过程以帮助其他遇到类似问题的学习者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

", line 13, in <module>
    if disDigit <= r1 and r2 <= r1:
TypeError: '<=' not supported between instances of 'complex' and 'int'

当我今天看到这个提示的时候脑子里一片混乱。
现在分析一下这个问题的由来。
首先请忽略我下方这个计算圆与圆之间距离的程序


x1, y1, r1 = eval(
    input("Enter circle1's center x-,y-coordinates, and radius: "))
x2, y2, r2 = eval(
    input("Enter circle2's center x-,y-coordinates, and radius: "))


disDigit = (pow((x2-x1), 2) + pow((y2-y1), 2)) ** 0.5

if disDigit <= r1 and r2 <= r1:
    print("circle2 is inside circle1")
elif disDigit >= r1 and r2 <= r1:
    print("circle2 does not overlap circle1")

当我输入了:

x1,y1,r1 = 0.5,5.1,13
x2,y2,r2 = 1,1.7,4.5

结果系统就出现了开头的提示。这个是为什么呢?? 后来我发现是不是和disDigit这个变量有关呢我采用了有效的打印功能

disDigit = (pow((x2-x1), 2) + pow((y2-y1), 2)) ** 0.5

print(disDigit) 在此处我加了一个print,真的这个功能真的很适合调试。

我发现结果竟然是(2.05926462249911e-16+3.363034344160047j)

天哪真的太离谱了原来我的公式写错了应该是下面这个样子是相减的

 disDigit = (pow((x2-x1), 2) - pow((y2-y1), 2)) ** 0.5

好了修改完后运行正常再次输入刚才的数值

  disDigit = 3.4365680554879163 

而结果是

  circle2 is inside circle1
所以这个小问题也许不是问题。希望对大家有所帮助
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾宝不是玉

谢谢各位兄弟们的关注,谢谢破费

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值