zoukankan      html  css  js  c++  java
  • 《Python核心编程》第二版第405页第十三章练习 续三 Python核心编程答案自己做的

    这是自己做的练习,可能有错误,欢迎讨论和各种优化重构方案。
    根据反馈,或者code review,对本篇文章答案或者相关内容的更新补充,一般会被添加在本篇博客的评论中。
    尽量保证每题的答案代码是完整的,不仅仅是函数或者类,打开Python 2.7的IDLE,将代码完整拷贝进去,就能调试运行。
    欢迎访问Balian在博客园的家。 http://www.cnblogs.com/balian

    13-5.
    几何。建立一个由有序数值对(x,y)组成的Point类,它代表某个点的X坐标和Y坐标。X坐标和Y坐标在实例时被传递给构造器,如果没有给出他们的值,则默认为坐标的原点。

    【答案】
    代码如下:

    >>> class Point(object):
    ...     def __init__(self, x = 0, y = 0):
    ...             self.xposition = x
    ...             self.yposition = y
    ...
    
    >>> j = Point()
    >>> j.xposition
    0
    >>> j.yposition
    0
    >>> j = Point(x = 9)
    >>> j.xposition
    9
    >>> j.yposition
    0
    >>> j = Point(1)
    >>> j.xposition
    1
    >>> j.yposition
    0
    >>> j = Point(1, 2)
    >>> j.xposition
    1
    >>> j.yposition
    2

    13-6.
    几何。创建一个直线/直线段类。除主要的数据属性:一对坐标值(参见上一个练习)外,它还具有长度和斜线属性。你需要覆盖__repr__()方法(如果需要的话,还有__str__()方法),使得代表那条直线(或直线段)的字符串表示形式是由一对元组构成的元组,即((x1,y1)、(x2,y2))。总结:
    __repr__()    将直线的两个端点(始点和止点)显示成一对元组
    length        返回此线段的长度 - 不要使用“len”,因为这样使人误解它是整型。
    slope        返回此线段值线段的斜率(或在适当的时候返回None)

    【答案】
    代码如下:

    class Segment(object):
        'Class about a line segment'
        
        def __init__(self, x1 = 0, y1 = 0, x2 = 0, y2 = 0):
            self.x1 = x1
            self.y1 = y1
            self.x2 = x2
            self.y2 = y2
            
        def position(self):
            self.point1 = (self.x1, self.y1)    
            self.point2 = (self.x2, self.y2)  
            return (self.point1, self.point2)
            
        def length(self):
            self.length = ((self.x2 - self.x1) ** 2 + (self.y2 - self.y1) ** 2) ** 0.5
            return self.length
            
        def slope(self):
            if self.x1 == self.x2:
                self.slope = 'None'
            else:
                self.slope = (self.y2 - self.y1) / (self.x2 * 1.0 - self.x1)
            return self.slope
    
    LingeSegment1 = Segment(0, 0, 3, 4)
    print 'Line Position is: ', LingeSegment1.position()
    print 'Length is: ', LingeSegment1.length()
    print 'Line slope is: ', LingeSegment1.slope()

    【执行结果】
    Line Position is:  ((0, 0), (3, 4))
    Length is:  5.0
    Line slope is:  1.33333333333

    【未完】
    本题没有按照题目的要求覆盖__repr__()方法,而是定义了新方法position。没有达到题目的要求。

  • 相关阅读:
    SHELL
    Docker
    RHCE内容记要
    mysql基本知识的总结
    Linux启动提示Kernel panic
    配置tomcat、nginx实现反向代理(需操作)
    linux下nginx的安装和配置
    linux下安装mysql5.7(centos6.0)
    linux打包解压包(.tar .gz .tar.gz .zip)
    多重继承下的类型转换
  • 原文地址:https://www.cnblogs.com/balian/p/2684453.html
Copyright © 2011-2022 走看看