#少兒編程#
在中國電子學會組織的「全國青少年軟體編程等級考試」Python一級考綱裡要求考生知道turtle庫的功能,知道如何導入該庫文件,掌握它的使用方法:前進、後退、左右轉、提落筆、畫點、畫圓等。
turtle,中文是海龜,所以我們有時也稱叫海龜作圖。
turtle模塊繪圖思路
首先導入turtle模塊;起始默認位置被設定在(0,0)處,即窗口的中心(起始位置可以設置),且繪製方向是從左往右;turtle模塊是模擬用筆繪製圖形的,默認筆是向下的(turtle.pendown()),好像筆尖放在紙上一樣;開始畫圖時,設置筆向下,按照要求移動繪製圖形繪製結束,將筆抬起turtle.penup()
【練習1】畫直線
我們先看一個最簡單的例子,用turtle模塊畫直線,如圖1。
① 要使用turtle庫首先要做的就是在代碼的最開始導入這個庫,這樣我們才能使用turtle提供的方法來畫圖。
第1行代碼import turtle,就是導入turtle庫。
② 紅框內的第3~7行代碼是初始化畫筆。
第3行代碼turtle.pencolor("red",),就是將畫筆的顏色設為紅色。Turtle庫的pencolor(color) 函數是設置畫筆顏色,參數可以是顏色的英文單詞,也可以是RGB3元組或顏色代碼。比如下面這3種寫法效果是一樣的,都是將畫筆設為紅色:
turtle.pencolor( (1,0,0) )
turtle.pencolor(「red」)
turtle.pencolor(「#ff0000」)
第5行代碼turtle.pensize(5),就是設置筆的粗細。Turtle庫的pensize(width)函數是設置筆尖的粗細,參數width為整型,數字越大,越粗。
第7行代碼turtle.pendown(),就是把筆尖放到畫布上,如果筆尖是抬起的狀態,那是無法畫畫的。
③ 中間第9~13行是真正畫畫的代碼。
第9行代碼turtle.forward(100),是畫長度為100的直線,從左往右畫。運行結果如圖2
第11行代碼turtle.goto(-100,-50),是將畫筆移動到(-100,-50)處。運行結果如圖3。
注意:turtle庫的gogo(x,y)函數,函數本身是移動到坐標為(x,y)的位置。不過如果筆尖是抬起來的狀態,那麼使用goto函數,畫筆是移到(x,y)處;但如果筆尖是放下的狀態,那麼使用goto函數,畫筆就是畫到(x,y)處。這就好比小朋友們拿著畫筆畫畫,如果筆尖抬起,那麼筆移到畫紙的另一個地方,紙上是不會有痕跡的,但如果筆尖是落在紙上的,那麼筆移到畫紙的另一個地方,紙上是有痕跡的。
我們這裡由於之前使用了pendown()函數,所以筆尖是落在紙上的,因此使用goto(x,y)函數後,畫布上是有畫的痕跡的。
第13行代碼turtle.forward(100),是再次畫長度為100的直線。運行結果如圖4。
④ 最後第15行代碼,turtle.penup(),是把筆尖抬起來。畫畫結束了,最後要把筆拿起來。
該練習實際運行結果如圖5:
【練習2】畫正方形
我們現在會畫直線了,那麼現在小朋友試著畫個正方形看看呢。
1、第一種方法:
我們用上面我們說的這些函數來畫個正方形,小朋友可以自己先試著自己寫寫代碼。
圖6是實現畫正方形的代碼:
① 行1的代碼是導入turtle庫
② 行3~行5的代碼是初始化畫筆
③ 行7~行10的代碼是通過goto(x,y)函數來實現畫正方形,由於筆尖是落下的,所以移動畫筆是會在畫布上畫出移動軌跡的,那麼我們只要算對坐標軸,就能畫出一個正方形。
2、第二種方法
上面那種方法雖然能畫出來,但小朋友們可能會覺得還要算坐標軸,很麻煩,而且也不符合畫正方形的一般思維。正方形有兩個特點,一個是4條邊相等,一個是4個角都是90度。
所以,我們現在看圖7這段代碼:
其它代碼我不說了,就單看行7~行9這三行代碼,這三行代碼實現了畫正方形。
① 行7的for語句,定義了我們這個循環要循環4次,i取值分別為0、1、2、3。
② 行8、行9是for循環體的代碼塊。
turtle.forward(150)是畫一條長度為150的直線。
turtle.rigth(90)是順時針轉動90度。如果你想逆時針轉90度,也可以使用turtle.left(90),小朋友們可以試一下。
這段代碼就是畫一條150的直線,轉90度,再畫150的直線,再轉90度,總共畫4次,就剛好完成一個正方形。
兩種方法的運行效果是一樣的,如圖8:
Ok,本篇我們使用turtle庫的工具繪製了最簡單的圖形,直線和正方形,會不會覺得太簡單了呢?turtle庫不僅能畫這些,它還可以畫很多很酷炫的圖形出來。我們後面會慢慢介紹的。
原創不易,請勿抄襲。歡迎大家關注我,和我多交流,如果你喜歡,請轉贊評三連,謝謝。