[英]python class rectangle new type
我是python的新手,我正在嘗試編寫類RectangleCollection。 給出了Rectangle類,我需要編寫類RectangleCollection部分。 class RectangleCollection有一個列表實例變量,矩形,最初應該引用一個空列表。 get_same_area_rects將一個數字作為參數,並返回具有該區域的矩形列表中所有矩形的列表。
class Rectangle:
""" A rectangle with a width and height. """
def __init__(self, w, h):
""" (Rectangle, number, number)
Create a new rectangle of width w and height h.
>>> r = Rectangle(1, 2)
>>> r.width
1
>>> r.height
2
"""
self.width = w
self.height = h
def area(self):
""" (Rectangle) -> number
Return the area of this rectangle.
>>> r = Rectangle(10, 20)
>>> r.area()
200
"""
return self.width * self.height
這些就是我所做的:
class RectangleCollection:
def __init__(self):
""" (RectangleCollection) -> NoneType
>>> rc = RectangleCollection()
>>> rc.rectangles
[]
"""
self.rectangles = []
def get_same_area_rects(self, number):
"""
>>>rc = RectangleCollection()
>>>r1 = Rectangle(10, 20)
>>>r2 = Rectangle(15, 20)
>>> r3 = Rectangle(20, 10)
>>>rc.rectangles.extend([r1, r2, r3])
>>>res = rc.get_same_area_rects(200)
>>>res == [r1, r3]
True
"""
self.number = number
a = self.rectangles.expend(self.area())
if number == self.rectangles.area():
return True
return False
但對於get_same_area_rects部分,我總是得到假..我不知道我做錯了什么。 請幫忙
我認為這是因為rc.rectangles給了我r1,r2,r3地址,而不是區域。 我應該得到[200,300,200],但我得到了地址。 我想這就是我總是弄錯的原因..我怎么能解決這個問題?
如何使用filter
功能只采取面積為number
矩形
def get_same_area_rects(self, number):
return filter(lambda rect: rect.area() == number, self.rectangles)
CSC108對嗎? 類中的這個函數不要求你返回True的False,它要求你調用這個函數來獲得它們的面積為200的矩形列表
您的代碼中有印刷錯誤。 它應該是:
extend
不expend
如下:
a = self.rectangles.extend(self.area())
if number == self.rectangles.extend(self.area()):
return True
或者干脆:
a = self.rectangles.extend(self.area())
if number == a:
return True
您必須創建一個臨時列表,然后循環遍歷矩形。 這是因為我們必須返回一個具有相同區域的列表,我們需要使用rectangle.area()來比較它們是否為真,然后添加到列表中。
def get_same_area_rects(self, number):
temp_list = []
for rectangle in self.rectangles:
if number == rectangle.area():
temp_list.append(rectangle)
return temp_list
希望能幫助到你 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.