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