林曉芬


關鍵詞:Python語言;turtle庫
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2023)03-0097-02
Python語言語法簡潔、清晰,是一門適合非計算機專業大學生學習的編程語言。Python有著十分強大的類庫,其中的Turtle庫能繪制簡單且有規律的圖形。在講解Turtle庫的知識前,應先介紹Python語言的順序結構、選擇結構和循環結構和列表等基本知識。這樣既有利于學生輕松地掌握代碼的編寫方法,又讓學生更好地理解Pyhon語言的語法結構。
Turtle庫是Python的標準庫之一,屬于入門級的圖形繪制函數庫。標準庫是隨解釋器直接安裝到操作系統中的功能模塊,第三方庫是需要經過安裝才能使用的功能模塊。Turtle的中文意思是海龜,turtle模塊通過控制畫筆的移動來繪圖,畫筆就像是一只海龜在畫布上爬,爬過的地方留下了痕跡,痕跡形成了圖形。海龜可以前進、后退、左轉、右轉。海龜有一條尾巴,當尾巴抬起時,爬過的地方不留下痕跡,尾巴放下時,爬過的地方留下痕跡[1-3]。
為提高學生的學習興趣,教學時筆者選取了一些繪圖案例,有正n邊形、太陽花、彩色螺旋線、奧運五環等[4-5]。這些圖案的代碼十分簡單,很適合初學者的學習。學生在學習這些繪圖代碼時,用到了Python語言中的循環語句、列表、索引等知識,讓學生在繪圖的時候加深了Python語法結構的理解和運用能力。
1 編程基礎知識
1.1 Python 程序的語句結構
計算機程序一般有三種語句結構:順序結構、選擇結構以及循環結構,利用這三種結構,可以編寫出各種復雜的應用程序。
順序結構是程序中最基本的結構,它是任何程序的主體結構,在該結構中,各語句按照出現的先后次序依次執行。當需要根據給定的條件做出不同選擇時,可以使用選擇結構來處理。在Python中,選擇結構有單分支結構、雙分支結構和多分支結構,分別用if語句、if...else...語句和if...elif...else...語句來實現。循環語句用來重復執行一條或多條語句,使用循環結構可以減少源程序重復書寫的工作量,簡化程序結構。在Python中,循環結構語句主要有while語句和for循環語句。本繪圖實例中,筆者使用的是for循環語句。
1.2 Turtle 庫的導入
Turtle 的導入可以使用from turtle import * 或者import turtle 兩種語句,前者在使用方法時不需要加turtle前綴,后者在使用方法時需要加上turtle.前綴,例如,向前語句turtle.forward(x)。
1.3 Turtle 庫的基本函數
Turtle庫中函數較少且容易記憶,且許多函數的名字與海龜動作名稱的自然語言一致,便于學生記憶。如:screensize(x,y,color),設置寬x、高y、顏色為color的畫布;setup(x,y),設置寬x,高y的畫布;forward(x),畫筆向前移動x像素;backward(x),畫筆向后移動x像素;left(x),畫筆方向向左旋轉x角度;right(x),畫筆方向向右旋轉x角度;shape(x),設置繪圖時的造型,默認為小箭頭;pensize(x),設置畫筆的粗細;width(x),設置畫筆的粗細;pencolor(x),設置畫筆的顏色;color(x,y),設置畫筆的顏色為x,設置填充的顏色為y;fillcolor(x),設置圖形的填充顏色;speed(x),設置畫筆移動的速度,取值在0-10之間,1最慢,10最快,0不移動;penup(),畫筆抬起;pen?down(),畫筆落下;goto(x,y),畫筆移動到x,y處,畫布中心為坐標原點;circle(R,E,S),畫圓,R為圓的半徑,E是圓弧的角度。R半徑為正時在畫筆的左邊畫圓,半徑為負值時在畫筆的右邊畫圓;reset(),清空窗口,畫筆重新回到畫布中央;clear(),清空窗口,但是畫筆的位置和狀態不會改變;begin_fill(),準備開始填充圖形;end_fill(),填充完成;write(),書寫;done(),海龜繪圖結束標識,防止腳本結束后關閉畫布。
Python語言中的顏色非常豐富,常見的表示顏色的字符串有:“while”白色、“black”黑色、“green”綠色、“blue”藍色、“yellow”黃色、“cyan”青色、“magenta”洋紅色、“purple”紫色、“brown”棕色、“pink”粉色、“gold”金色、“tomato”番茄色等。
1.4 Turtle 坐標系
Turtle的坐標系有屏幕坐標系、空間坐標系和角度坐標系等。屏幕坐標系指的是畫布與屏幕之間的相對位置關系,顯示器屏幕的左上角為坐標原點,如圖1所示。可以用setup(width,height,startx,starty) 方法設置畫布左上角與屏幕左上角之間的距離。空間坐標系是指畫筆與畫布之間的相對位置關系,默認坐標原點在畫布的正中心,繪圖時,畫筆從畫布的中心位置開始移動,畫筆的方向默認是x軸的正方向,如圖2所示。角度坐標系如圖3所示,x軸的正方向為0度,y軸的正方向為90度,可以通過setheading(angle) 方法來設置畫筆的方向。
2 繪圖實例
筆者安裝的Python版本是Python -3.8.1(64-bit) 。
2.1 繪制彩色六邊形
圖4中的彩色六邊形實際上是由6個正三角形組成的。利用circle()方法中的steps參數來畫三角形,利用color() 方法設置畫筆顏色和填充顏色,利用列表colors和for循環語句來實現顏色的變化。程序設計結構是計算機語言教學中的重點和難點,結構化的程序設計有三種基本的結構:順序結構、選擇結構和循環結構。在這個教學案例中,通過繪制正六邊形,引導學生深入地理解循環結構。
圖5中的圖形是由六個三角形和一個正六邊形構成的。代碼段中,首先定義了一個函數triangle,這個函數的作用是畫正三角形。然后創建了一個列表colors,列表用來放顏色。然后用for循環畫正六邊形,循環六次,每循環一次的時候調用一次triangle函數,最終得到圖5的圖形。在這個教學案例中,通過繪圖實例,引導學生理解循環的嵌套是如何實現圖形的繪制。
2.2 繪制彩虹
圖6中的彩虹是通過一個for循環語句和列表col?ors實現的。先創建一個列表colors來放顏色,然后設置畫筆的寬度,因為是畫彩虹,所以畫筆寬度要設得比較寬。然后用circle() 方法來畫半圓,每循環一次,circle()中的半徑就要增大一次,畫筆的顏色也要不斷改變,這些是通過循環語句來實現的。setheading()方法用來設置畫筆的方向。每次畫筆的起點都不一樣,這是通過goto()方法來實現的,但每一次畫筆的起始方向都是一樣的。
2.3 繪制箭靶
圖7和圖8是實現彩色圓環的兩種方法。圖7中所采用的方法,是從最外圈開始畫圓,然后逐漸縮小畫圓所用的半徑值。圖8中所采用的方法,是從最里圈開始畫圓,然后逐漸增大畫圓所用的半徑值。
這兩種方法都使用了for 循環語句和circle() 方法。畫圖時,要注意畫筆的初始位置和畫筆的方向,才能畫出想要的圖形。
3 結論
Turtle庫是一個簡單易學的繪圖庫,學習門檻低,繪圖函數易學易記。在計算機程序設計教學中,改變以往把解決數學問題作為編程例題的做法,把圖形繪制帶入程序設計教學中。教學實踐表明,通過各種有趣、生動鮮明、貼合生活實際的繪圖實例,可以激發學生學習Python語言的興趣,增強學生學習編程的信心[6],Turtle庫可以作為學習Python語言的入門庫。