Python 矩形阵列中的公共点

Python 矩形阵列中的公共点,python,boolean,rectangles,intersect,Python,Boolean,Rectangles,Intersect,开发一个函数,该函数在一个矩形数组之间找到一个公共交集,但是该方法在应该为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

开发一个函数,该函数在一个矩形数组之间找到一个公共交集,但是该方法在应该为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
类矩形:
def相交(自身、其他):
“”“如果一个矩形与另一个矩形相交,则返回true。”“”
返回(self.top\u right.x>other.bottom\u left.x和self.bottom\u left.xother.bottom\u left.y)
将多条直线分类:
def公共_点(自身):
值=假
对于范围内的i(len(自矩形)-2):
对于范围内的j(len(自矩形)-1,-1,-1):
如果自矩形[i]与(自矩形[j])相交==真:
值=真
其他:
返回错误
返回真值

问题的一部分是因为在代码中,只要任何矩形不相交,函数就会返回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作为我的范围,我认为应该是-1。此外,j的范围应在i+1到len(自矩形)之间,否则当i==j时,您将始终得到一个交点。我已经合并了这些更改。

您是否已经添加了一些输出行以查看可能的错误?顺便说一下,您已经编写了一个函数,它与两个参数相交,而您只使用一个参数启动它。一切正常吗?我已经运行了输出,仍然看不到问题所在。是的,这是因为第一个参数被认为是正在测试的类变量,因此self是一个参数,而不是self.rectangles表示其他@DominiqueI希望您已经编写了一些测试用例-您测试过代码是否认为两个相同的矩形相交吗?