第一章:turtle畫圖

pyScripter 是 Python 眾多編輯器其中一種。

https://sourceforge.net/projects/pyscripter/

安裝需求

必須先安裝 Python。

執行 pyScripter

以後我們可以快擊兩下 pyScripter 捷徑,就可以開啟 pyScripter 編輯器,用它來寫 Python 程式。

(1)第一個turtle程式

# -*- coding: utf8 -*- import turtle # 匯入turtle套件,允許我們使用turtle指令 window = turtle.Screen() # 產生畫布以進行畫圖 john = turtle.Turtle() # 建立一個海龜turtle,它的名字叫john john.forward(50) # 告訴海龜往前走50個單位 john.left(90) # 告訴海龜左轉90度 john.forward(30) # 告訴海龜往前走30個單位 window.exitonclick() # 等待使用者關閉視窗

練習:請你修改上面的程式,畫出一個長方形

(2)多隻海龜畫圖

Python是物件導向程式,我們可以在程式中產生多個物件實體(instance),每個物件實體有自己的屬性和方法。

我們要建立一隻叫做john的海龜,讓它畫出黑色細線,另外再建立一隻叫做marry的海龜,讓它畫出粉紅粗線。

# -*- coding: utf8 -*- import turtle # 匯入turtle套件,允許我們使用turtle指令 window = turtle.Screen() # 產生畫布以進行畫圖 window.bgcolor("lightgreen") # 設定畫布底色為淺綠色 marry = turtle.Turtle() # 建立一個海龜turtle,它的名字叫marry marry.color("hotpink") # 設定畫筆顏色為粉紅色 marry.pensize(5) # 設定畫筆粗細為5個像素 marry.forward(80) # 告訴海龜往前走80個單位 marry.left(120) # 告訴海龜左轉120度 marry.forward(80) marry.left(120) marry.forward(80) marry.left(120) john = turtle.Turtle() # 建立一個海龜turtle,它的名字叫john john.forward(50) # 告訴海龜往前走50個單位 john.left(90) # 告訴海龜左轉90度 john.forward(50) john.left(90) john.forward(50) john.left(90) john.forward(50) john.left(90) window.exitonclick() # 等待使用者關閉視窗

(3)for迴圈

在上面畫正方形的程式碼中,有沒有發現程式重複出現呢?我們可以用for迴圈來精簡程式碼。

for i in [0,1,2,3]: john.forward(50) john.left(90)

[0,1,2,3]是一個串列,你也可以使用range(4)產生這個串列。所以上面的程式碼可以寫成:

for i in range(4): john.forward(50) john.left(90)

如果要正方形四個邊都不同顏色,我們可以先將顏色名稱儲存在串列中,再配合for迴圈一個一個取出來用。

colors = ["yellow", "red", "purple", "blue"] for pen_color in colors: john.color(pen_color) john.forward(50) john.left(90)

(4)turtle小變化

海龜畫圖時,可以做出提筆與下筆的動作。

john.penup() john.forward(100) # 這行指令會移動海龜,但不會留下軌跡 john.pendown()

你也可以改變海龜的形狀

john.shape("turtle")

你也可以改變海龜畫圖的速度

john.speed(10)

你也可以蓋章

john.stamp()

綜合以上的小變化,我們來試試寫個程式。

# -*- coding: utf8 -*- import turtle window = turtle.Screen() window.bgcolor("lightgreen") john = turtle.Turtle() john.shape("turtle") john.color("blue") john.penup() # 提筆 size = 20 for i in range(30): john.stamp() # 蓋章 size = size + 3 # 逐漸增加每次往前的距離 john.forward(size) # 往前走 john.right(24) # 向右轉 window.exitonclick()

練習題:

\

123

參考資料:

http://openbookproject.net/thinkcs/python/english3e/index.html

results matching ""

    No results matching ""