第一章: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