簡體   English   中英

python類矩形新類型

[英]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的矩形列表

您的代碼中有印刷錯誤。 它應該是:

extendexpend如下:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM