发现一个函数,它找到一个矩形数组之间的公共交集,但是当它应该为true时,该方法返回False。该函数调用类矩形中的intersect函数。有什么建议。
Class Rectangle:
def intersects(self, other):
"""Return true if a rectangle intersects the other rectangle."""
return (self.top_right.x > other.bottom_left.x and self.bottom_left.x < other.top_right.x and self.bottom_left.y < other.top_right.y and self.top_right.y > other.bottom_left.y)
Class Many_Rect:
def common_point(self):
value = False
for i in range(len(self.rectangles) - 2):
for j in range(len(self.rectangles) - 1, -1, -1):
if self.rectangles[i].intersects(self.rectangles[j]) == True:
value = True
else:
return False
return True
答案 0 :(得分:0)
你的部分问题是因为在你的代码中,只要任何矩形没有与你的函数相交,你的函数就会返回False - 但它不应该返回False,除非没有矩形相交。但是,如果两个矩形相交,那么一旦找到它就可以返回True,因为没有任何点检查。您的代码应如下所示:
def common_point(self):
for i in range(len(self.rectangles) - 1):
for j in range(i+1,len(self.rectangles)):
if self.rectangles[i].intersects(self.rectangles[j])
# these rectangles intersect - no point checking any more
return True
# none of the rectangles intersect
return False
我不确定为什么你使用len(self.rectangles)-2作为i的范围 - 我认为这应该是-1。 j也应该介于i + 1到len(self.rectangles)之间,否则当i == j时你将总是得到一个交集。我已将这些变化纳入其中。