Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ryByteDesign_docx.pdf
Search
Renyuan Lyu
November 17, 2014
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ryByteDesign_docx.pdf
Renyuan Lyu
November 17, 2014
More Decks by Renyuan Lyu
See All by Renyuan Lyu
turtledemo002
renyuanl
0
1.2k
Python Programming Art, Ch01~Ch03, _all_.py
renyuanl
0
680
TurtleGraphicsInPython.pdf
renyuanl
0
2.1k
ryPythonTurtleDemo.pdf
renyuanl
0
970
103學年度相約在麗山手冊
renyuanl
0
540
Probability & Statistics, 2013 Final exams
renyuanl
0
1.1k
RyAudio, A Real-time Audio Spectrogram
renyuanl
1
2.1k
Teaching Teenagers to Coding
renyuanl
0
3.1k
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Exploring anti-patterns in Rails
aemeredith
4
520
Designing for humans not robots
tammielis
254
26k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
450
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
260
Navigating Team Friction
lara
192
16k
Agile that works and the tools we love
rasmusluckow
331
22k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Transcript
1 ryByteDesign Renyuan Lyu 2014/11/18
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: 定義 「設計師類」,叫它繼承 「龜類」。
3 159: 主函數(),做為本程式的主要流程。 161: 一開始先製造出一個物件, 名為「小王」,它屬於「設計師類」, 俱備所有「設計師類」的屬性, 因為「設計師類」繼承「龜類」, 故「小王」也有一切「龜類」的屬性。 因此,所有「龜類」、「設計師類」的動作,
「小王」通通有。 這就是「物件導向」程式設計的主要魅力所在。 162: 小王 的速度設為 0。那代表本系列程式能達到的「最快」速度。 163: 小王 的形狀設為 'turtle',是烏龜的形狀。 165: 定義 一個 小函數,名為 色位角(), 打算用來設定小王的顏色、位置以及頭方向的角度。 174: 定義 一個 小函數,名為 畫小零件(), 打算用來試畫「設計師類」中的小「方法」, 包含: 畫三角組() 畫五角組() 畫多角() 畫三角() 畫中央星() 192: 指定一個距離 L= 300,打算代表所要畫圖之中心距離。 193:
4 依據 L 的值,先畫小零件。 194: 依據 L 的值,並指定顏色為 'purple' (紫色),
然後叫 小王 畫輪子。 195: 依據 L 的值,並指定顏色為 'brown' (棕色), 然後叫 小王 設計。(畫完整的設計圖) 176: 176~177: 179: 179~180:
5 182: 182~183: 185~186: 187~188: 189~190: 194: 195:
6 12,17,42,66, 90, 121, 130, 147: 分別是 「設計師類」 所屬的「類函數」,又名「方法」。它們分別為: 12:
__init__() 17: 設計() 42: 畫輪子() 66: 畫三角組() 90: 畫五角組() 121: 畫多角() 130: 畫三角() 147: 畫中央星()
7 12~15: __init__(): __init__() 這個 「方法」是一個很特殊的「類函數」,它的名稱是固定的,就叫做 __init__,特別注意一下 它的前後都有「雙底線」,這是 Python 特別規定的專有名稱,若定義物類時,程式師想要在物件「誕生」時就
自動做點什麼事,比如在主程式中,使用 小王= 設計師類() 這個指令時,我們誕生了小王,與此同時,這個 __init__() 也被執行了。另外值得注意的是,這種類函數,都有一個特殊的傳入引數,名為「我」,這個「我」 會出現在所有其它的類函數中,它就是代表那個 「小王」 。當你在主程式中使用了 小王= 設計師類() 這個指令時, 小王跑到設計師類裡面,就變成了「我」 。在一般的英文 Python 程式中,一般約定俗成是用 self 這個英文字, self 的本意是「自我」,由於它到處出現,因此簡化成一個單字「我」,讓程式看起來比較簡潔。 本函數的另一個引數「比例」,是為了提供設計師畫圖時,全圖放大縮小的比例,這個引數不給時,自動設為 1。 由於「設計師類」繼承「龜類」,為了讓 小王 也具備了所有 龜類 的屬性,因此呼叫 龜類 的 __init__,把代 表 小王 的 「我」 傳入,才能染上所有「龜類」的完整屬性。 這個傳入的「比例」,就黏在「我」上面,在物類內,就可以無所不在,到處用得到。 17~40: 設計(): 設計() 這個 「方法」是 設計師類 之中,最高層的 「方法」,除了必要的「我」之外,另有一個「位置」傳入, 代表設計師畫設計圖時,中心位置的座標。 這個「方法」包含了很多其它的「小方法」,除了基本的「龜動作」之外, 它還包含了 2 個「較大的方法」,分別是 行號 24:「畫輪子」和 行號 38:「畫中央星」,這 2 個較大的方法,分別定 義在以下 行號 42 以及 行號 147 之處。 由 行號 20: 我們可看出 總共畫了 5 個 「輪子」 ,最後 補上了 「中央星」 。
8
9 121: 畫多角(): 畫多角() 這個 「方法」, 在指定 「角度」為 75 時,75*5
= 375, 375-360 = 15,轉 5 次時超過 360 度有 15 度,而且每走一次,長度都會縮減(.38),再繼續呼叫自己,事實上就是無限迴圈,直到 行號 122 處 所規定的邊長縮減成 小於 2 時,就不再呼叫自己,而跳出自我呼叫的迴圈。 這種自我呼叫的函數稱為「遞迴」(recursive)函數。運用遞迴函數時,要特別注意「終止條件」的設定。 在本例中,就是行號 122 所寫的條件。
10