所以我想這樣做:如何編寫一個Python矩形類?
創建一個名爲Rectangle
具有以下屬性和方法的類(樣品運行每種方法包括):
每個實例都應該有一個X,Y,寬度和高度屬性。
您應該能夠通過創建矩形時的屬性如下,(其中x = 5,Y = 10,寬度= 50,以該順序高度= 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())
任何幫助深表感謝。
請注意使用你的縮進,你想成爲類的一部分的函數需要被縮進爲'def __init __()' –
它會一直給我一個錯誤,如果我縮進其餘部分... – whatamii
預期會發生什麼'width(-1)'只有40的時候調用''Rectangle''嗎? – Kupiakos