天天看點

《教孩子學程式設計(Python語言版)》——2.3 海龜畫圓

本節書摘來自異步社群《教孩子學程式設計(python語言版)》一書中的第2章,第2.3節,作者[美]bryson payne,李軍 譯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

說到幾何,海龜作圖可以繪制很多有趣的形狀,而不隻是直線。我們将在2.4節中再次回到正方形,但現在,讓我們來更多地了解一下python turtle庫。

我們再來修改一行代碼:t.forward(x)。我們在前面看到了這條指令或函數,它将海龜的鋼筆向前移動x個像素并且繪制一條筆直的線段;然後,海龜轉向并且再次繪制。如果我們修改這行代碼來繪制更為複雜一點的圖形,例如圓,那會怎麼樣呢?

好在,繪制一個固定大小(或半徑)的圓的指令,和繪制一條直線的指令一樣簡單。我們将t.forward(x)修改為t.circle(x),如下面的代碼所示。

circlespiral1.py

哦,将一條指令從t.forward修改為t.circle,會得到一個複雜得多的形狀,如圖2-3所示。t.circle(x)函數讓程式在目前位置繪制了一個半徑為x的圓。注意,這個繪制和簡單的正方形螺旋線有一些相同點:它也有4組圓形的螺旋線,就像是正方形的螺旋線有4個邊一樣。這是因為我們使用t.left(91)指令,每次向左旋轉都将超過90°一點點。如果我們學習過幾何就知道,圍繞一個點轉一圈有360°,就像是一個正方形有4個90°的角(4×90 = 360)。海龜通過每次圍繞圖形旋轉的比90°多一點點,進而繪制出這個螺旋線的形狀。

《教孩子學程式設計(Python語言版)》——2.3 海龜畫圓

我們将會看到的一個差別是,圓形螺旋線比正方形螺旋線要大一些,實際上,大約是前者兩倍那麼大。這是因為t.circle(x)使用x作為圓的半徑,而這是從圓心到邊緣的距離,大概是圓的寬度的一半。

半徑為x意味着,圓的直徑,也就是說總的寬度是x的兩倍。換句話說,t.circle(x)繪制的圓,當x等于1的時候,總寬度為2個像素;當x為2的時候總寬度為4個像素;按照這種方式,直到x等于99的時候,其寬度為198個像素。這幾乎是200個像素寬了,或者說是正方形邊最大的時候的兩倍,是以,圓螺旋線看上去是正方形螺旋線的兩倍的大小,當然,也會加倍的酷!