Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ryByteDesign_docx.pdf

Renyuan Lyu
November 17, 2014
940

 ryByteDesign_docx.pdf

Renyuan Lyu

November 17, 2014
Tweet

Transcript

  1. 2 01: 若本程式在 mac 或 linux 上執行,則自動呼叫 python3 來執行。 02:

    聲明本程式的文字編碼為 utf-8,涵蓋中文。 04~06: 本程式的存檔檔名。 07: 本程式之原版程式引入 turtle 模組。 08: 本程式欲使用中文名稱,引入非官方的 turtle_tc 模組。 你可嘗試 google 一下 turtle_tc,將可找導 turtle_tc.py,下載後與本程式放在同一個檔案夾即可使用。 本程式從 turtle_tc 引入 2 個 名目, 分別是 「龜類」 和 「主迴圈」。 10: 定義 「設計師類」,叫它繼承 「龜類」。
  2. 3 159: 主函數(),做為本程式的主要流程。 161: 一開始先製造出一個物件, 名為「小王」,它屬於「設計師類」, 俱備所有「設計師類」的屬性, 因為「設計師類」繼承「龜類」, 故「小王」也有一切「龜類」的屬性。 因此,所有「龜類」、「設計師類」的動作,

    「小王」通通有。 這就是「物件導向」程式設計的主要魅力所在。 162: 小王 的速度設為 0。那代表本系列程式能達到的「最快」速度。 163: 小王 的形狀設為 'turtle',是烏龜的形狀。 165: 定義 一個 小函數,名為 色位角(), 打算用來設定小王的顏色、位置以及頭方向的角度。 174: 定義 一個 小函數,名為 畫小零件(), 打算用來試畫「設計師類」中的小「方法」, 包含: 畫三角組() 畫五角組() 畫多角() 畫三角() 畫中央星() 192: 指定一個距離 L= 300,打算代表所要畫圖之中心距離。 193:
  3. 4 依據 L 的值,先畫小零件。 194: 依據 L 的值,並指定顏色為 'purple' (紫色),

    然後叫 小王 畫輪子。 195: 依據 L 的值,並指定顏色為 'brown' (棕色), 然後叫 小王 設計。(畫完整的設計圖) 176: 176~177: 179: 179~180:
  4. 6 12,17,42,66, 90, 121, 130, 147: 分別是 「設計師類」 所屬的「類函數」,又名「方法」。它們分別為: 12:

    __init__() 17: 設計() 42: 畫輪子() 66: 畫三角組() 90: 畫五角組() 121: 畫多角() 130: 畫三角() 147: 畫中央星()
  5. 7 12~15: __init__(): __init__() 這個 「方法」是一個很特殊的「類函數」,它的名稱是固定的,就叫做 __init__,特別注意一下 它的前後都有「雙底線」,這是 Python 特別規定的專有名稱,若定義物類時,程式師想要在物件「誕生」時就

    自動做點什麼事,比如在主程式中,使用 小王= 設計師類() 這個指令時,我們誕生了小王,與此同時,這個 __init__() 也被執行了。另外值得注意的是,這種類函數,都有一個特殊的傳入引數,名為「我」,這個「我」 會出現在所有其它的類函數中,它就是代表那個 「小王」 。當你在主程式中使用了 小王= 設計師類() 這個指令時, 小王跑到設計師類裡面,就變成了「我」 。在一般的英文 Python 程式中,一般約定俗成是用 self 這個英文字, self 的本意是「自我」,由於它到處出現,因此簡化成一個單字「我」,讓程式看起來比較簡潔。 本函數的另一個引數「比例」,是為了提供設計師畫圖時,全圖放大縮小的比例,這個引數不給時,自動設為 1。 由於「設計師類」繼承「龜類」,為了讓 小王 也具備了所有 龜類 的屬性,因此呼叫 龜類 的 __init__,把代 表 小王 的 「我」 傳入,才能染上所有「龜類」的完整屬性。 這個傳入的「比例」,就黏在「我」上面,在物類內,就可以無所不在,到處用得到。 17~40: 設計(): 設計() 這個 「方法」是 設計師類 之中,最高層的 「方法」,除了必要的「我」之外,另有一個「位置」傳入, 代表設計師畫設計圖時,中心位置的座標。 這個「方法」包含了很多其它的「小方法」,除了基本的「龜動作」之外, 它還包含了 2 個「較大的方法」,分別是 行號 24:「畫輪子」和 行號 38:「畫中央星」,這 2 個較大的方法,分別定 義在以下 行號 42 以及 行號 147 之處。 由 行號 20: 我們可看出 總共畫了 5 個 「輪子」 ,最後 補上了 「中央星」 。
  6. 8

  7. 9 121: 畫多角(): 畫多角() 這個 「方法」, 在指定 「角度」為 75 時,75*5

    = 375, 375-360 = 15,轉 5 次時超過 360 度有 15 度,而且每走一次,長度都會縮減(.38),再繼續呼叫自己,事實上就是無限迴圈,直到 行號 122 處 所規定的邊長縮減成 小於 2 時,就不再呼叫自己,而跳出自我呼叫的迴圈。 這種自我呼叫的函數稱為「遞迴」(recursive)函數。運用遞迴函數時,要特別注意「終止條件」的設定。 在本例中,就是行號 122 所寫的條件。
  8. 10