第24期-畫圖形
1 問題描述
按照要求使用turtle庫畫出圖形
畫半徑為50的圓;
畫長方形;
畫邊長為100的紅色五角星。
2 解題思路
在畫布上,預設有一個座標原點為畫布中心的座標軸,座標原點上有一隻面朝x軸正方向小烏龜。這裡我們描述小烏龜時使用了兩個詞語:座標原點(位置),面朝x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態。
操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運動命令,一種為畫筆控制命令,還有一種是全域性控制命令。
3 解題方法
畫半徑為50的圓
import turtle turtle.circle(50) turtle.done()
第1行:引入turtle畫相簿
第2行:turtle.circle()便是turtle庫的畫圓指令,括號內填的是半徑
第2行:turtle.done()是turtle庫的執行指令,表示開始畫圖
程式碼執行結果為:
這裡用到了turtle.circle函式,簡單講解下這個函式:
turtle.circle()函式
語法:
turtle.circle(radius, extent=None, steps=None)
引數說明:
radius(半徑):半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓;
extent(弧度) (optional);
steps (optional) (做半徑為radius的圓的內切正多邊形,多邊形邊數為steps)。
畫長方形
import turtle i = 1 while i <= 4: if i % 2 == 1: turtle.fd(100) else: turtle.fd(50) turtle.left(90) i += 1 turtle.done()
第1行:引入turtle畫相簿
第2行:定義i變數並賦值為1,作為畫圖時轉彎以及前進的次數
第3行:使用while迴圈,當前進次數小於或等於四的時候,繼續迴圈
第4-7行:當次數是奇數時,前進100個單位,當次數是偶數時,前進50個單位
第8行:每當一條線畫完的時候,前進方向都向左轉90度
第9行:記錄轉彎及前進的次數
第9行:開始畫圖
程式碼執行結果為:
畫邊長為100的紅色五角星
import turtle i = 1 turtle.fillcolor('red') turtle.color('red') turtle.begin_fill() while i <= 5: turtle.fd(100) turtle.right(144) i += 1 turtle.end_fill() turtle.done()
第1行:引入turtle畫相簿
第2行:定義i變數並賦值為1,作為畫圖時轉彎以及前進的次數
第3行:定義畫圖的填充顏色為紅色(指閉環圖形內部的顏色)
第4行:定義畫圖的畫筆顏色為紅色(指任意圖形邊長的顏色)
第5行:填充顏色開始
第6行:使用while迴圈,當前進次數小於或等於5的時候,繼續迴圈
第7-9行:每次迴圈前進100個單位,每當一條線畫完的時候,前進方向都向右轉144度,並記錄記錄轉彎及前進的次數
第10行:給從turtle.begin_fill()到turtle.end_fill()內部的程式碼期間畫的圖形填充顏色
第11行:開始畫圖
程式碼執行結果為:
全部放到一起
import turtle # 引入一個繪相簿 # 畫半徑為50的圓 turtle.circle(50) # 畫長方形 turtle.penup() turtle.goto(-100, 0) turtle.right(180) turtle.pendown() i = 1 while i <= 4: if i % 2 == 1: turtle.fd(100) else: turtle.fd(50) turtle.left(90) i += 1 turtle.left(180) # 畫邊長為100的紅色五角星 turtle.penup() turtle.goto(100, 0) turtle.pendown() i = 1 turtle.fillcolor('red') turtle.color('red') turtle.begin_fill() while i <= 5: turtle.fd(100) turtle.right(144) i += 1 turtle.end_fill() turtle.done()
程式碼執行結果為:
這裡用到了turtle庫內的一些方法,簡單講解下這些方法:
turtle.circle(半徑)
設定填充顏色turtle.fillcolor(顏色) 開始填充turtle.begin_fill() 結束填充turtle.end_fill()
抬起筆turtle.up() 放下筆turtle.down()
向左轉turtle.left(角度) 向右轉turtle.right(角度)
向前走turtle.forward(距離)/turtle.fd(距離) 向後走turtle.back(距離)/turtle.bk(距離)
移動到指定位置tutle.goto(x座標, y座標)/ turtle.setx(x座標) / turtle.sety(y座標) 回到開始位置turtle.home()
設定筆的顏色turtle.pencolor(顏色)