《Python核心編程》第二版第405頁第十三章練習 續三 -Python核心編程答案-自己做的-

來源:互聯網
上載者:User

這是自己做的練習,可能有錯誤,歡迎討論和各種最佳化重構方案。
根據反饋,或者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.xposition0>>> j.yposition0>>> j = Point(x = 9)>>> j.xposition9>>> j.yposition0>>> j = Point(1)>>> j.xposition1>>> j.yposition0>>> j = Point(1, 2)>>> j.xposition1>>> j.yposition2

 

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.slopeLingeSegment1 = 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。沒有達到題目的要求。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.