python初学者写博客的第一天,记录学python学习过程(渴望得到大佬指点)

python初学者写博客的第一天,记录学python学习过程(渴望得到大佬指点)

今天写了一个Python练习题,发现自己的和答案相差有点大(虽然做出来了)。

  • 问题:

    1. 设计两个类:
    2. 一个点类,属性包括x,y坐标
    3. 一个 rcetangle(矩形) 类,属性有左上角和右下角坐标
    4. 计算矩形面积
    5. 判断点是否在矩形内
    6. 实例化一个对象,一个正方形对象,输出矩形面积,输出点是否在矩形内

    我做的(未修改)

    class Dot(object):
        def __init__(self, x, y):
            self.x = x
            self.y = y
    
    
    class Rectangle(Dot):
        def __init__(self, top_left_corner_x, top_left_corner_y, lower_right_corner_x, lower_right_corner_y, x, y):
            super().__init__(x, y)
            self.top_left_corner_x = top_left_corner_x
            self.top_left_corner_y = top_left_corner_y
            self.lower_right_corner_x = lower_right_corner_x
            self.lower_right_corner_y = lower_right_corner_y
    
        def area(self):
            length = abs(self.lower_right_corner_x - self.top_left_corner_x)
    
            height = abs(self.lower_right_corner_y - self.top_left_corner_y)
    
            area = length * height
            return area
    
        def is_in(self):
            if self.lower_right_corner_x > self.x > self.top_left_corner_x and \
                    self.lower_right_corner_y > self.y > self.top_left_corner_y:
                print('点在矩形里')
            else:
                print('点没在')
    
    
    s = Rectangle(0, 10, 10, 0, 1, 1)
    d = Dot(1, 100)
    print(s.area())
    s.is_in()
    

    这是没修改前的,使用了继承,实际上点和矩形是没有继承关系的

    倒数第三行代码也是没有用处的

    属性太多

    不如干脆写一个类

    修改版

    class Dot(object):
        def __init__(self, x, y):
            self.x = x
            self.y = y
    
    
    class Rectangle(object):
        def __init__(self, top_left_corner: Dot, lower_right_corner: Dot):
            self.top_left_corner = top_left_corner
            self.lower_right_corner = lower_right_corner
    
        def area(self):
            length = abs(self.lower_right_corner.x - self.top_left_corner.x)
            height = abs(self.lower_right_corner.y - self.top_left_corner.y)
            area = length * height
            return area
    
        def is_in(self, dot):
            if self.lower_right_corner.x > dot.x > self.top_left_corner.x and \
                    self.lower_right_corner.y > dot.y > self.top_left_corner.y:
                print('点在矩形里')
            else:
                print('点没在')
    
    
    d1 = Dot(0, 10)
    d2 = Dot(10, 0)
    s = Rectangle(d1, d2)
    d = Dot(100, 100)
    print(s.area())
    s.is_in(d)
    
    

    收获

    1.def__ init__(self, top_left_corner: Dot, lower_right_corner: Dot):

    应该是调用类(有疑问)

    2.abs()内置函数,取绝对值

    3.继承别瞎用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值