2020年9月28日星期一

004 趣學Python程式設計 第1部分 學習程式設計 第4章 用海龜畫圖

 申明本站飛宇網 https://feiyetopro.blogspot.com/自網路收集整理之書籍文章影音僅供預覽交流學習研究,其[書籍、文章、影音]情節內容, 評論屬其個人行為, 與本網站無關。版權歸原作者和出版社所有,請在下載 24 小時內刪除,不得用作商業用途;如果您喜歡其作品,請支持訂閱購買[正版]謝謝!



4章 用海龜畫圖

Python裡的海龜有點像真實世界中的海龜。我們知道,海龜是一種爬行動物,背上背著自己的房子,緩慢地四處爬。在Python的世界裡,海龜是一個小小的黑色箭頭,它在螢幕上慢慢移動。Python裡的海龜在移動時後面會留下軌跡,實際上更像是蝸牛或者鼻涕蟲。

海龜是學習基本電腦作圖的好方法,所以在這一章裡我們會用Python的海龜來畫一些簡單的形狀和線。

4.1 使用Pythonturtle(海龜)模組

Python中,模組是給別的程式提供有用的代碼的一種方式(用處之一就是模組可以包含供我們使用的函數)。我們會在第7章中學到更多關於模組的內容。Python有一個叫turtle的特殊模組,我們可以用它來學習電腦是如何在螢幕上畫圖的。turtle這個模組提供了編寫向量圖的方法,基本上就是畫簡單的直線、點和曲線。


我們來看看海龜是如何工作的。首先,點擊桌面上的圖示來打開Python Shell程式(或者如果你用的是Ubuntu的話,選擇應用程式->程式設計->IDLE”)。接下來讓Python引入turtle模組,就像這樣:


引入模組就是告訴Python你想要使用它。


如果你用
Ubuntu並且得到了錯誤資訊的話,你可能需要安裝tkinter。做法是打開Ubuntu軟體中心,在搜索框中輸入python-tk。你應該會在視窗中看到“Tkinter - Writing Tk Applications with Python”。點擊安裝來安裝這個包。

4.1.1 創建畫布

現在既然我們已經引入了turtle模組,接下來我們要創建一個畫布,也就是一個用來畫圖的空白空間,就像藝術家的畫布一樣。做法是調用turtle模組中的Pen函數,它會自動創建一個畫布。在PythonShell程式中輸入:


你應當會看到一個空白的方塊(畫布),中間有一個箭頭,如圖4-1所示。


4-1 空白畫布

螢幕中間的那個箭頭就是海龜,怎麼樣?看上去有點像吧?

如果海龜視窗出現在PythonShell程式視窗的後面,你可能會發現好像有問題。當你把滑鼠挪到海龜視窗上時,游標變成了沙漏,如圖4-2所示。


4-2 游標變成了沙漏

這可能會有幾個原因:你不是通過桌面上的圖示來啟動Shell程式(如果你用的是Windows或者蘋果電腦),你點擊的是Windows開始功能表中的IDLEPython圖形介面),或者IDLE的安裝有問題。嘗試退出並用桌面圖示來重啟Shell程式。如果還不行,嘗試用Python控制台而不是Shell程式,操作如下。

  • Windows中,選擇開始->所有程式,然後在Python 3.2的組中點擊Pythoncommand line)。
  • Mac OS X中,點擊螢幕右上角的Spotlight圖示,然後在輸入框中輸入終端。在終端程式打開後輸入python
  • Ubuntu中,從應用功能表中打開終端程式並輸入python

4.1.2 移動海龜

我們要使用剛剛創建的變數t上面的函數來給海龜發指令。有點類似於在turtle模組中使用Pen函數。例如,forward指令讓海龜向前移動。要讓海龜向前移動50個圖元,輸入下面的命令:



你看到的結果如圖4-3所示。


4-3 運行結果

海龜向前移動了50個圖元。一個圖元就是螢幕上的一個點,也就是可以表現出的最小元素。你在電腦顯示器上看到的所有東西都是由圖元組成的,它們是很小的、方形的點。如果你可以放大來看畫布和上面我們畫的那條線的話,你可能會看到用來表示海龜的那個箭頭就是一堆圖元,如圖4-4所示。這就是簡單的電腦作圖。


4-4 放大後的效果

現在,我們要用下面的命令讓海龜左轉90度:


如果你還沒學過角度的概念,那麼這樣想:想像一下你站在一個圓的圓心上。

  • 你面對的方向的角度為0度。
  • 如果你伸平左臂,這就是向左90度方向。
  • 如果你伸平右臂,這就是向右90度方向。
  • 從圖4-5中你可以看到向左或向右的90度。


4-5 向左或向右90

如果從你右手臂指向的方向繼續畫圈向右轉動,在你正後方的是180度,你左手臂所指的方向是270度,回到你開始的地方就是360度。角度從0開始到360結束。完整一圈的角度,向右轉時每次增加45度,如圖4-6所示。


4-6 每次增加45

Python的海龜向左轉時,它會轉動面向新的方向(就像你轉動身體面向左臂所指的向左90度一樣)。

t.left(90)這個命令把箭頭指向上(因為它原來指向右邊),如圖4-7所示。


4-7 箭頭指向上方


當你調用
t.left(90)時,這和調用t.right(270)是一樣的。調用t.rigtht(90) t.left(270)也是一樣的。只要想像出那個圓圈,沿方向找到那個角度就好了。

現在我們要畫一個方塊。在你已經輸入的代碼後再輸入如下代碼行:







海龜這時就應該畫出了一個方塊並且面向開始的那個方向,如圖4-8所示。




4-8 畫出了一個方塊

要擦除畫布,輸入重置命令(reset)。這會清除畫布並把海龜放回開始的位置。


你也可以使用清除命令(clear),它只清除螢幕,海龜仍留在原位。


我們還可以讓海龜向右(right)轉,或者讓它後退(backward)。我們可以用向上(up)來把筆從紙上抬起來(換句話說就是讓海龜停止作畫),用向下(down)來開始作畫。這些函數的用法和我們之前用過的那些一樣。

讓我們用這些命令再來畫另一張畫。這次,我們要讓海龜畫兩條線。輸入下面的代碼:



首先,我們用t.reset()重置畫布並把海龜移回到開始位置。接下來,我們用t.backward(100)把海龜向後移動100個圖元,然後用t.up()來把筆抬起來不再作畫。

然後,用命令t.right(90)把海龜向右轉90度來指向螢幕下方的底部,然後用t.foraward(20)來向前移動20個圖元。這樣不會畫出東西來,因為我們在第三行用了up命令。我們用t.left(90)把海龜向左轉90度來指向右方,然後用down命令來讓海龜把筆再放下重新開始作畫。最後,我們用t.forward(100)來向前畫出一條與第一條線平行的線來。我們畫的這兩條平行線最後看起來如圖4-9所示。



4-9 畫出兩條平行線

4.2 你學到了什麼

在這一章裡,你學會了如何使用Pythonturtle模組。我們用向左(left)、向右(right)、向前(forward)和向後(backward)命令畫了一些簡單的線。用向上(up)命令來讓海龜停止作畫,用向下(down)命令來重新開始作畫。你還學會了海龜是按角度轉身的。

4.3 程式設計小測驗

嘗試用海龜畫出下麵的圖形。答案可以在網站http://python-for-kids.com/ 上找到。

#1:長方形

turtle模組的Pen函數來創建一個新畫布,然後畫一個長方形。

#2:三角形

創建另一個畫布,這次畫一個三角形。參考圓圈上的角度那張圖(圖4-6)來回憶要讓海龜轉動多少角度來指向哪個方向。

#3:沒有角的方格

寫個程式來畫出如圖4-10所示的四條線(大小不重要,只要形狀一樣就可以)。


4-10 畫出四條線