具有Rectangle的类/方法

时间:2015-10-05 02:03:00

标签: python-3.x

因此,在完成了一些基础知识并开始游戏后,我终于开始习惯Python,至少在基本意义上如此。感谢那些在这里帮助我的人。

然而,我对书中看到的练习感到厌倦,如下所示。

创建一个名为' Rectangle'的类。具有以下属性和方法(包括每个方法的示例运行):

1)每个实例都应该有x,y,width和height属性。

2)你应该能够在创建矩形时传递属性,如下所示(其中x = 5,y = 10,width = 50,height = 100依次):

    r = Rectangle(5, 10, 50, 100)        

3)创建一个将矩形作为字符串返回的方法(提示:实现 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)      

4)创建一个名为right的方法,该方法获取矩形右边缘的值。它不应该争论:

r3 = Rectangle(3, 5, 10, 20)
 r3.right()
  13     

r4 = Rectangle(12, 10, 72, 35)
 r4.right()
  84 

5)创建一个名为bottom的方法,该方法获取矩形底边的值。

r5 = Rectangle(5, 7, 10, 6)
r5.bottom()
  13      

r5.y += 12    
r5.bottom()
  25         

6)创建一个名为size的方法,它返回矩形的宽度和高度。

r6 = Rectangle(1, 2, 3, 4)
r6.size()
  (3, 4) 

7)创建一个名为position的方法,它返回矩形的x和y坐标。

r6.position()
  (1, 2) 

8)创建一个名为area的方法,返回矩形区域。

r6.area()
  12     

9)创建一个名为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)

到目前为止,我在这里:

    class Rectangle:

        def __init__(self, X, Y, W, H):

        self.x = X

        self.y = Y

        self.w = W

        self.h = H
        x=5
        Y=10
        W=50
        H=100

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):
    ''

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())

练习的第二部分我还没有尝试过,因为我还在第一部分工作。

创建一个名为contains_point的方法,它将坐标x和y作为参数,如果矩形内部(或边缘)上的点则返回True,否则返回False。

r = Rectangle(30, 40, 100, 110) 

r.contains_point(50, 50)
  True  

r.contains_point(30,40)
  True

r.contains_point(130, 150)
  True      

r.contains_point(131, 50)
  False      

r.contains_point(0,0)
  False

所以基本上我只是在这个问题的第一部分工作,并寻找一些关于我到目前为止的一些信息。我仍然对第1部分问题9感到困惑,而且我不确定我的代码在一般情况下做错了什么。暗示性阅读,批评或建设性的批评都受到赞赏

0 个答案:

没有答案