我试图编写一个函数来判断用户创建的两个圆是否相交。测试函数时,main()
函数中的点给出错误:
input expected at most 1 argument, got 3
在circleOverlap()
函数中使用时,distance()
工作正常。distance()
函数本身给出了上述错误。我不知道接下来该怎么办:
def distance(point1, point2):
p1x = point1.getX()
p1y = point1.getY()
p2x = point1.getX()
p2y = point2.getY()
dist = math.sqrt( ((p1x-p2x)**2)+((p1y-p2y)**2) )
return dist
def circleOverlap():
winHeight = 400
winWidth = 400
win = GraphWin("Overlapping circles", winHeight, winWidth)
instruct = Text(Point(winWidth/2, winHeight-10), "Circles")
instruct.draw(win)
instruct.setText("Click to draw centerpoint of circle")
center1 = win.getMouse()
center1.draw(win)
x1 = center1.getX()
y1 = center1.getY()
instruct.setText("Click to add border of circle.")
border = win.getMouse()
radius1 = distance(center1, border)
circle1 = Circle(center1, radius1)
circle1.draw(win)
print(center1)
instruct.setText("Click to draw centerpoint of circle")
center2 = win.getMouse()
center2.draw(win)
x2 = center2.getX()
y2 = center2.getY()
instruct.setText("Click to add border of circle.")
border2 = win.getMouse()
radius2 = distance(center2, border2)
circle2 = Circle(center2, radius2)
circle2.draw(win)
if radius1 > radius2:
rds = radius1
else:
rds = radius2
xDif = abs(x1-x2)
yDif = abs(y1-y2)
fDif = math.sqrt((xDif)**2 + (yDif)**2)
if fDif <= rds:
print("Circles Overlap")
instruct.setText("Click anywhere to close.")
win.getMouse()
win.close()
def main():
print("")
print("Euclidean Distance Calculator!!")
p2 = Point("3.0, 6.0")
p1 = Point("3.0, 2.0")
print(distance(p1, p2))
distance()
函数和测试代码中存在问题。在distance()
函数中,下面的第三行不正确,它应该在point2
上调用getX()
:这个错误使你的圆圈太小。在
main()
中的测试代码中,这些行不正确:在传递单个字符串时,应传递两个数字:
下面是通过上述修复和一些样式更改对代码进行的返工:
相关问题 更多 >
编程相关推荐