", 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