所以我想这样做:
使用以下属性和方法创建名为Rectangle
的类(包含每个方法的示例运行):
每个实例都应具有x,y,width和height属性。
您应该能够在创建矩形时传递属性,如下所示(其中x = 5,y = 10,width = 50,height = 100依次):
r = Rectangle(5, 10, 50, 100)
创建一个将矩形作为字符串返回的方法(提示:实现 str )。对于属性值为x = 5,y = 10,width = 50,height = 100的矩形对象,它应返回字符串Rectangle(5, 10, 50, 100)
。
>>> r2 = Rectangle(5, 10, 50, 100)
>>> print(r2)
Rectangle(5, 10, 50, 100)
创建一个名为right
的方法,该方法获取矩形右边缘的值。它不应该争论:
>>> r3 = Rectangle(3, 5, 10, 20)
>>> r3.right()
13
>>> r4 = Rectangle(12, 10, 72, 35)
>>> r4.right()
84
创建一个名为bottom
的方法,该方法获取矩形底边的值。
>>> r5 = Rectangle(5, 7, 10, 6)
>>> r5.bottom()
13
>>> r5.y += 12
>>> r5.bottom()
25
创建一个名为size
的方法,返回矩形的宽度和高度。
>>> r6 = Rectangle(1, 2, 3, 4)
>>> r6.size()
(3, 4)
创建一个名为position
的方法,返回矩形的x和y坐标。
>>> r6.position()
(1, 2)
创建一个名为area
的方法,返回矩形区域。
>>> r6.area()
12
创建一个名为expand
的方法,该方法采用偏移值并返回在所有方向上以偏移量展开的矩形的副本。
>>> r = Rectangle(30, 40, 100, 110)
>>> r
Rectangle(30, 40, 100, 110)
>>> r1 = r.expand(offset=3)
>>> r1
Rectangle(27, 37, 106, 116)
不应修改原始矩形。
>>> r
Rectangle(30, 40, 100, 110)
负值应返回缩小的矩形。
>>> r.expand(-5)
Rectangle(35, 45, 90, 100)
我无法弄清楚9号,但我相信我做的其他事情是正确的,这是我到目前为止:
class Rectangle:
def __init__(self, X, Y, W, H):
self.x = X
self.y = Y
self.w = W
self.h = H
def complete(self):
return self.x,self.y,self.w,self.h
def right(self):
return self.x + self.w
def __str__(self):
return('Rectangle(' + str(self.x) + ',' + str(self.y) + ','
+ str(self.w) + ',' + str(self.h)+')')
def bottom(self):
return self.y + self.h
def __str__(self):
return('Rectangle(' + str(self.y) + ',' + str(self.h) + ','
+ str(self.y) + ',' + str(self.h) + ')')
def size(self):
return self.w,self.h
def position(self):
return self.x,self.y
def area(self):
return self.w * self.h
def expand(self):
pass
print(Rectangle(5,10,50,100).complete())
print(Rectangle(3, 5, 10, 20).right())
print(Rectangle(12, 10, 72, 35).right())
print(Rectangle(5,7,10,6).bottom())
print(Rectangle(1,2,3,4).size())
print(Rectangle(1,2,3,4).position())
print(Rectangle(1,2,3,4).area())
非常感谢任何帮助。
答案 0 :(得分:0)
def expand(self,amt):
x = self.x - amt # move left side out by amount specified
y = self.y - amt # move the top side up by the specified amt
w = self.width + amt * 2 # make the width long enough so the left side and right side are both expanded by amount
h = self.height + amt * 2 # make the height tall enough so both top and bottom are expanded
return Rectangle(x,y,w,h)
请注意,我没有仔细查看您的课程...您的变量可能会被命名为不同...我还假设在您的实际代码中您有正确的缩进...