我有一个点和矩形类。我试图在矩形类中编写一个函数来检查点是否在矩形中,但是我遇到了语法错误。
class Point(object):
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return "({},{})".format(self.x, self.y)
class Rectangle(object):
def __init__(self, posn, w, h):
self.corner = posn
self.width = w
self.height = h
def __str__(self):
return "({0},{1},{2})".format(self.corner, self.width, self.height)
def contains(self):
if self.x < self.width and self.y < self.height:
return True
else:
return False
答案 0 :(得分:0)
你必须与缩进保持一致。您在代码中混合了四个,三个和两个空格缩进。 Here's a link to PEP 8,大多数人遵循的标准风格指南。
class Point(object):
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return "({},{})".format(self.x, self.y)
class Rectangle(object):
def __init__(self, posn, w, h):
self.corner = posn
self.width = w
self.height = h
def __str__(self):
return "({0},{1},{2})".format(self.corner, self.width, self.height)
def contains(self):
if self.x < self.width and self.y < self.height:
return True
else:
return False
答案 1 :(得分:0)
您的contains
方法不会将某个点作为参数,只有self
(这是您调用方法的矩形)。您需要添加一个参数,然后在查找该点的信息时使用它。
您可能还需要检查矩形的所有边界,因此将进行四次比较。您可以使用Python的运算符链来简化比较(a < b < c
等同于a < b and b < c
)。
此外,不需要if
语句,您可以直接返回比较的布尔结果。
这里的代码我觉得应该适合你,虽然我可能没有正确猜到你如何处理corner
值:
def contains(self, point):
return (self.corner.x <= point.x <= self.corner.x + self.width and
self.corner.y <= point.y <= self.corner.y + self.height)