毛京宇 魏云靖
Python turtle的發(fā)展
Python中的turtle模塊受啟發(fā)于在歐美有著廣泛基礎且歷史悠久的LOGO語言。LOGO語言形式非常直接,通過一組簡單的指令就可以指揮計算機在屏幕上繪制出或極具現代感或抽象復雜的圖像。正是因為LOGO教學的廣泛開展,使得很多青少年不再將編程等同于geeks或nuts的專長,并對數學、邏輯和計算機等相關學科產生了濃厚的興趣。
初代turtle模塊隨2001年12月21日發(fā)布的Python 2.2版本被添加到了Python標準庫之中。后經多個版本的調整逐漸穩(wěn)定并形成當前版本中的功能和操作。
Python turtle是向LOGO語言的致敬,可以通過turtle .mode0函數予以調整,盡最大可能還原LOGO語言中小海龜操作的特點。
隨著Python語言的流行和普及,一位名叫Ram Rachum的網絡工程師重構了Python turtle并單獨封裝形成了一款叫作PythonTurtle的教學軟件,可以在Windows和Mac計算機上安裝和運行。
Python海龜繪圖課
在正式上課之前,請注意:
(1) Python是一種開放標準的通用開發(fā)語言,不少組織發(fā)行了各具特色的版本。本文所載程序使用的Python編譯器為CPython(官方社區(qū)發(fā)行版本)3.7.3。當然,如果讀者使用其他發(fā)行版就不能運行示例腳本。當出現意外情況時,請您在檢查時考慮版本因素。
(2)盡管現在互聯網上有很多在線版本的Python運行環(huán)境(無論是Python官方社區(qū)的Interactive Shell,又或者各大廠家提供的在線Jupyter Notebook服務),并且turtle是Python標準庫,但是由于無法加載并創(chuàng)建tkinter.Canvas畫布的原因,所以在線平臺無法讓海龜暢游作畫。
本文以偏概全僅對絕大多數常用turtle模塊函數進行梳理,希望能對初學者有所引領。學習Python晟好的平臺當然還是官方社區(qū)提供的文檔站點,讀者可以訪問https://docs.python. org/zh-cn/3/Library/turtle. html進行更為全面的學習。
讓海龜暢游起來
揮毫創(chuàng)作當然要首先學會運筆。Python Turtle的基礎就是讓海龜能夠在畫布中暢快遨游。
有了表1這些基礎我們就可以繪圖了。
怎么turtle畫圖一上來就讓讀者碰了釘子?也許你覺得海龜畫圖太過平淡,那我們就在上面程序的基礎上加入for循環(huán)做點兒炫目的效果。這里我有意識地使用了2個之前沒有講解過的turtle模塊中的繪圖函數,相信聰明的讀者在閱讀源代碼的過程中一定能夠理解其中深意。
“油漆桶”工具
一筆一筆“揮毫”雖然有趣,但如果需要大面積著色時還是“潑墨”畫法更有效率。表2中的一組turtle函數不但完成畫筆“油漆桶”般的填充著色功能,而且還能設置和判斷海龜繪圖時的狀態(tài)。
準備好了嗎?這回我們加入了函數這種結構化程序設計的技術優(yōu)化腳本,現在要驗證所學的新知識了。
用Python turtle打太極,是不是很有趣?
互動繪圖板
Python turtle除了能夠完成基本的繪圖任務之外,還可以在程序中添加鍵盤和鼠標交互函數,制作出具有互動功能的程序甚至小游戲。下面是與交互有關的常用函數,讓我們一起來學習一下吧。
有了表3這些函數的輔助,我們就可以制作一個繪圖板程序。在操作時,鼠標左鍵控制“畫筆”在繪圖板中運動,鼠標中鍵可以切換繪圖時的顏色,鼠標右鍵控制圖形填充及“畫筆”在繪圖板上的“落筆”“抬筆”操作。
總結
turtle繪圖模塊受LOGO語言啟發(fā)而創(chuàng)建,能夠有效激發(fā)初學者的學習熱情并釋放創(chuàng)意。turtle繪圖模塊僅僅是Python不斷發(fā)展壯大標準庫中的其中一員,無論是淺嘗輒止熱衷于在計算機上揮毫潑墨,還是循序漸進探究前沿科技,都是一個非常具有潛力的終南捷徑。
參考資料
Python turtle官方文檔(https://docs.python.org/zh-cn/3/library/turtle.html)