前面我們分享過Python中海龜庫的基礎知識體系。
少兒Python編程培訓手冊系列之——海龜庫基礎用法
本文從繪製一顆五角星開始,逐級增加難度,學習掌握雙重嵌套循環、函數的定義及使用、以及函數與循環的完美結合——「遞歸思想」在程序中的應用。
01任務一:一顆五角星
繪製一顆五角星,只需要五條線首尾相連,旋轉一定的角度(144°)即可。使用到了前進forward()和右轉right()(或左轉)函數,通過循環可以使代碼更簡潔。參考如下:
這裡採用了while循環,通過count計數器來累計邊數,達到5條邊後退出循環。大家可改寫成for循環試一試,代碼量會更少。
02任務二:重複不同大小的五角星
如果要繪製大小不同的多顆五角星呢?如圖所示:
其實就是把任務一中繪製一個五角星的代碼重複多次執行即可,只需要改變線條的長度即可。
方式一:可以採用嵌套雙重循環
外層循環控制五角星的個數,內層循環控制每次繪製一個五角星。如下:
上述5-9行代碼,是畫筆的初始化設置,讓起始點向左移動200,並設置畫筆顏色為紅色。11-17行代碼,採用雙重嵌套循環,改變每次繪製五角星的線條長度,每次按照20的級數遞增。
為了讓代碼的層次結構更清晰簡潔,可以這樣來優化:
方式二:定義函數,封裝繪製五角星的代碼
上圖中前四行的代碼,以def開頭的部分,就是繪製五角星函數的定義部分,函數名:wujiaoxing(),傳入了一個線條大小size的參數。
中間五行代碼,是畫筆的初始化部分;最後兩行代碼,循環裡面調用函數,讓繪製五角星的功能重複執行10次。也同樣滿足了上述的要求。
03 任務三:函數與循環的結合——遞歸思想
再增加一點難點,就是不用我們常規使用的while或for循環,也能實現上述任務二的功能。
如何做到呢?編寫遞歸函數。
遞歸:函數定義中調用函數自身的方式稱為遞歸。這種方式能夠非常簡潔的解決重複問題。
5-13行代碼,就是採用遞歸思想定義的重複繪製五角星的函數。先繪製起始大小的五角星(50);改變線條長度,按照20的基數遞增;在大小滿足條件的情況下,調用自身重複繪製,以達到循環的效果。
切記!遞歸函數中必須構建結束條件,否則程序就變成了死循環(無限循環)。
還需要注意:
每次函數調用時,函數參數會臨時存儲,相互沒有影響。
達到終止條件時,各函數逐層結束運算,返回計算結果,其實就是一種倒推模式。
題外話學習Python的經驗和方法
1、 多動手,多驗證,多思考,多實踐;
2、 學會使用搜尋引擎;
3、 放輕鬆,多犯錯。 犯錯誤是很正常的,在錯誤中可以學習到更多。