1. 程式人生 > 其它 >第24期-畫圖形

第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(顏色)