Python繪圖庫及二級訓練集

2021-03-02 大學計算機基礎

turtle庫是python的基礎繪圖庫

這個庫被介紹為一個最常用的用來給初學者介紹編程知識的方法庫,其主要是用於程序設計入門,是標準庫之一,利用turtle可以製作很多複雜的繪圖。

turtle原理理解

turtle名稱含義為「海龜」,我們想像一隻海龜,位於顯示器上窗體的正中心,在畫布上遊走,它遊走的軌跡就形成了繪製的圖形。
海龜的運動是由程序控制的,它可以變換顏色,改變大小(寬度)等。


【導入標準庫Turtle方法】

1、import <庫名>

例如:import turtle
如果需要使用庫函數中的函數,需要使用:<庫名>.<函數名> 
例如:import turtle
turtle.fd(100)

2、from <庫名> import <函數名>

from <庫名> import  *, 使用這種方式時,直接使用<函數名> 
例如:  >>>from turtle import * 
 fd(100)

兩種方式的區別:如果採用第一種方式,用戶自定義的函數名字可以和庫中函數一樣,例如,程序中可以定義自己的fd()函數。如果採用第二種方式,用戶程序中不能用函數庫中的名字定義函數。例如:程序中不能定義新的fd()函數,因為庫turtle庫中的fd()函數也是直接通過fd()調用。

  turtle.setup()函數用於啟動一個圖形窗口,它有四個參數,turtle.setup(width,height,startx,starty),分別是:啟動窗口的寬度和高度,表示窗口啟動時,窗口左上角在屏幕中的坐標位置。向左為橫坐標,向下為縱坐標。

  turtle.pensize()函數表示運動軌跡的寬度。它包含一個輸入參數,即多少像素。

  turtle.pencolor()函數表示運動軌跡的顏色。它包含一個輸入參數, 
  即想要的顏色。

  turtle.seth()函數表示啟動時運動的方向。它包含一個輸入參數,是角度值。

  turtle.circle()函數表示繪製的圖形為圓形,它包含兩個參數,rad描述軌跡半徑的位置,angle表示沿著圓形爬行的弧度值。

  turtle.fd()函數也可以用turtle.forward()表示,表示向前直線移動,它有一個參數表示移動的距離。

3、import <庫名> as t 

t 相當於turtle的別名,turtle的調用可以用t來簡化表示,減少文字的輸入量。

如果需要使用庫函數中的函數,需要使用:<別名>.<函數名> 
例如:import turtle
t.fd(100)

t.color("red")

【繪圖窗體】

turtle.setup(width,height,startx,starty)

使用turtle的setup函數,可以在屏幕中生成一個窗口(窗體),設置窗體的大小和位置,這個窗口就是畫布的範圍。
畫布的最小單位是像素,屏幕的坐標系以左上角為原點(0,0)分布。



 

setup的四個參數分別指的是

setup()也是可選的,只是需要定義窗口的大小及位置是才使用。

turtle空間坐標體系絕對坐標

以屏幕中間為原點(0,0),形成四象限的坐標體系。

可以使用turtle.goto(x,y)方法來讓海龜沿著絕對坐標進行運動:

import turtle

turtle.goto(100,100)
turtle.goto(100,-100)
turtle.goto(-100,-100)
turtle.goto(-100,100)
turtle.goto(0,0)

海龜坐標

是以海龜的視角的坐標體系,分為四個方向:

使用以下方法可以使海龜在指向的方向上移動、轉向等 


 

turtle.fd(distance) #前進
turtle.bk(distance) #後退
turtle.rt(angle) #右轉
turtle.lt(angle) #左轉

空間坐標體系下繪圖

import turtle

turtle.left(45)
turtle.fd(150)
turtle.right(135)
turtle.fd(300)
turtle.left(135)
turtle.fd(150)

通過這幾句可以在畫布上實現一個斜著的Z字。

turtle角度坐標體系絕對角度坐標

絕對坐標體系下 有一個絕對角度體系

使用turtle.seth()方法改變海龜的朝向,但不運動

海龜角度坐標

海龜的角度坐標體系下,只分左轉和右轉兩種情況。
使用以下方法來改變它的角度:


 

turtle.left(angle) #向海龜左邊改變運行方向
turtle.right(angle) #向海龜右邊改變運行方向

RGB色彩體系

三種基礎顏色:red green blue構成萬物色。
能夠覆蓋視力能感知的所有顏色。
在計算機RGB色彩體系中,每個基礎顏色的取值範圍是0-255的整數,或0-1的小數

常用顏色:

使用turtle.colormode(mode)來調整海龜的顏色,默認採用RGB小數值,可以切換為整數值
mode 小數值模式:1.0
mode 整數值模式:255

turtle 函數介紹畫筆控制函數畫筆操作後一直有效,一般成對使用

turtle.penup() # turtle.pu() 抬起畫筆,不再畫線

turtle.pendown() # turtle.pd() 落下畫筆,繼續畫線

畫筆設置後一直有效,直到下次重新設置

turtle.pensize(width) # turtle.width(width) 設置畫筆的寬度
turtle.pencolor(color) # color 為 色彩RGB值 設置畫筆的顏色

# color參數 有三種形式
# 顏色字符串
turtle.pencolor('purple') # 小寫
# RGB小數值
turtle.pencolor(0.63,0.13,0.94) #三個小數值
# RGB數值元組
turtle.pencolor((0.63,0.13,0.94)) # 一個三元素元組

運動控制函數

控制畫筆的行進:走直線&走曲線

# 直線
turtle.forward(d) # turtle.fd(d) d為參數行進距離 控制畫筆向前走d長度的直線 d可以為負數,表示向後運動

# 曲線
turtle.circle(r,extent=None) # 根據半徑r繪製extent角度的弧形 r 默認圓心在畫筆左端點距離r長度的地方 extent是繪製的角度,默認繪製完整的圓形
turtle.circle(100) # 在畫筆的左側(也就是上方)100距離的位置上然後以弧形來運動,沒有設置extent參數,因此會繪製整個圓形
turtle.circle(-100,90) #圓心在畫筆的右側100距離(也就是下方)上,然後extent為90,因此繪製一個90度的弧形。

 

方向控制函數

控制h畫筆面對的方向:絕對角度 & 畫筆角度

# 絕對角度轉向函數
turtle.setheading(angle) # turtle.seth(angle) 改變畫筆的面向的角度( 初始方向是畫布的正右方) 參數angle是絕對坐標系的角度

#畫筆角度轉向函數
turtle.left(angle) # 向左轉angle度
turtle.right(angle) # 向右轉angle度

向控制函數隻改方向,但是不會動,運動由運動控制函數實現。

熟悉以上這些,就能完成基本的繪圖了

樣例:

#PythonDraw.py
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done()

下面的案例我們會剖析繪製一片樹林的Turtle繪圖程序:

數學幾何模型1-2:

(1)先來繪製一個等邊三角形:

from turtle import *

goto(30,0)

left(120)

forward(60)

left(120)

forward(60)

left(120)

forward(60)

其中:

left(120)   、 forward(60)  有三個重複的部分,代碼可以用循環簡化化:

from turtle import *

penup() #抬筆

goto(30,0)

pendown()  #落筆

for t in range(3):

    left(120)

    forward(60)

形狀如下:

(2)先來繪製三個等邊三角形(向上方向):

代碼改進:

from turtle import *

penup() #抬筆

goto(30,0)

pendown()  #落筆

for t in range(3):

    left(120)

    forward(60)

goto(30,15)

pendown()  #落筆

for t in range(3):

    left(120)

    forward(60)

goto(30,30)

pendown()  #落筆

for t in range(3):

    left(120)

    forward(60) 



發現有連筆現象,添加2處代碼:

細細看上面的代碼,發現A、B、C三個語句塊有重複的情況:

我們來用一個循環簡化一下:

(3)繪製樹幹,幾何模型

from turtle import *

for z in range(3):

    penup() #抬筆

    goto(30,z*15)

    pendown()  #落筆

    for t in range(3):

        left(120)    #左轉120度

        forward(60)  #前進60像素

penup()

goto(7,0)

pendown()

right(90)

forward(28)

right(90)

forward(14)

right(90)

forward(28)

right(90)

forward(14)

上面代碼有重複,簡化它:

from turtle import *

for z in range(3):

    penup() #抬筆

    goto(30,z*15)

    pendown()  #落筆

    for t in range(3):

        left(120)    #左轉120度

        forward(60)  #前進60像素

penup()

goto(7,0)

pendown()

for t in range(2):

    right(90)

    forward(28)

    right(90)

    forward(14)

(4)一起填充點顏色吧,添加代碼加黑的。

from turtle import *

color("black","green") #輪廓顏色為黑色,填充顏色為綠色

pensize(5)

for z in range(3):

    penup() #抬筆

    goto(30,z*15)

    pendown()  #落筆

    begin_fill()

    for t in range(3):

        left(120)    #左轉120度

        forward(60)  #前進60像素

    end_fill()

penup()

goto(7,0)

pendown()

color("black","brown") #輪廓顏色為黑色,填充顏色為棕色

begin_fill()

for t in range(2):

    right(90)

    forward(28)

    right(90)

    forward(14)

end_fill()

動圖演示如下:

(5)畫一排樹,修改代碼加粗(第一個加粗循環後面的代碼,整體縮進一個Tab位置)

from turtle import *

pensize(5)

speed(9)

for x in range(-1,2):

    for z in range(3):

        penup() #抬筆

        goto(30 + x * 150 ,z*15)

        pendown()  #落筆

        color("black","green") #輪廓顏色為黑色,填充顏色為綠色

        begin_fill()

        for t in range(3):

            left(120)    #左轉120度

            forward(60)  #前進60像素

        end_fill()

    penup()

    goto(7+ x * 150,0)

    pendown()

    color("black","brown") #輪廓顏色為黑色,填充顏色為棕色

    begin_fill()

    for t in range(2):

        right(90)

        forward(28)

        right(90)

        forward(14)

    end_fill()

延伸擴展作業

(1)三排樹(一排3顆)

(2)三排樹(一排3顆),每顆樹編個號吧!

(3)做一個隨機種植樹林的森林吧

我們下次課再見吧!

1、使用turtle庫繪製輪廓顏色為紅色(red),填充顏色為粉紅色(pink)的心形圖形,效果如下圖,閱讀程序框架,補充代碼【x】 處代碼

from turtle import *

speed(9)

color('red',【1】)

【2】

pendown()

left(135)

fd(100)

right(180)

circle(50,-180)

left(90)

circle(50,-180)

right(180)

fd(100)

end_fill()

hideturtle()

done()

2、使用turtle庫繪製紅色五角形,效果如下圖所示。閱讀程序框架,補充【X】處代碼

from turtle import *

【1】

goto( -100, 50)

pendown()

color("red")

begin_fill()

for i in range(5):

      forward(200)

      【2】

end_fill()

hideturtle()

3、使用turtle庫繪製正文形螺旋線,效果如下圖所示,閱讀程序框架,補充【X】片代碼。

import turtle

 

n = 10

for i in range(1,10,1):

      for j in [90,180,-90,0]:

            turtle.seth( 【1】 )

            turtle.fd( 【2】  )

            n += 5 

    

4、使用turtle庫繪製簡單城市剪影圖形,效果如下圖所示,閱讀程序框架,補充【X】片代碼。

import turtle

turtle.penup()

turtle.fd(-350)

turtle.pendown()

def DrawLine(【1】):

      for angle in [0,90,-90,-90,90]:

            turtle.left(angle)

            turtle.fd(size)

for i  in  [20,30,40,50,40,30,20]:

      【2】

  

turtle.hideturtle()

turtle.done()

5、使用turtle庫繪製同心圓圖形,效果如下圖所示,閱讀程序框架,補充【X】片代碼。

【1】

def DrawCctCircle( n ):

      t.penup()

      t.goto(0 ,-n )

      t.pendown()

      【2】

for i in range( 20, 100, 20):

      DrawCctCircle(i)

6、使用turtle庫繪製鋼琴鍵示意圖形,效果如下圖所示,閱讀程序框架,補充【X】片代碼

import turtle as t

#t.setup(500,300)

t.speed(9)

t.penup()

t.goto( -180, -50)

【1】 #將畫筆移到絕對位置(-180,-50)處

【2】 # 畫筆落下

def Drawrect():

      t.fd(40)

      t.left(90)

      t.fd(120)

      t.left(90)

      t.fd(40)

      t.left(90)

      t.fd(120)

      t.penup()

      t.left(90)

      t.fd(42)

      t.pendown()

for i in range(7):

      Drawrect()

  

t.penup()

t.goto( -150, 0)

t.pendown()

def DrawRectBlack():

      t.color('black')

      t.begin_fill()

      t.fd(30)

      t.left(90)

      t.fd(70)

      t.left(90)

      t.fd(30)

      t.left(90)

      t.fd(70)

      t.end_fill()

      t.penup()

      t.left(90)

      t.fd(40)

      t.pendown()

DrawRectBlack()

DrawRectBlack()

t.penup()

t.fd(48)

t.pendown()

DrawRectBlack()

DrawRectBlack()

DrawRectBlack()

 

t.hideturtle()

t.done()

7、使用turtle庫繪製疊加等邊三角形,效果如下圖所示,閱讀程序框架,補充【X】片代碼。

import turtle

【1】    #將畫筆寬度設置為2像素

turtle.color('red')

【2】    # 向小海龜當前前行方向前進160像素

turtle.seth(120)

turtle.fd(160)

turtle.seth(-120)

turtle.fd(160)

turtle.penup()

turtle.seth(0)

turtle.fd(80)

turtle.pendown()

turtle.seth(60)

turtle.fd(80)

turtle.seth(180)

turtle.fd(80)

turtle.seth(-60)

turtle.fd(80)

8、使用turtle庫繪製八角星形,效果如下圖所示,閱讀程序框架,補充【X】片代碼。

import turtle as t   

#t.colormode(255)

t.color(【1】) #設置顏色取值為金色(255,215,0)

t.begin_fill()

for x in range(【2】):

      t.forward(200)

      t.left(225)

t.end_fill()

9、使用turtle庫繪製5種多邊形,效果如下圖所示,閱讀程序框架,補充【X】片代碼。

from turtle import * 

for i in range(5):

      【1】  #畫筆抬起

      goto( -200+100*i , -50)

      pendown()

      【2】( 40, steps= 3+i )  #繪某個形狀

  

done()

hideturtle()

10、使用turtle庫繪製樹圖形,效果如下圖所示,閱讀程序框架,補充【X】片代碼。

import turtle as t  

def tree( length, 【1】 ): #樹的層次

      if level <= 0:

            return 

      t.forward( 【2】 ) #前進方向畫length距離

      t.left( 45 )

      tree( 0.6 * length, level - 1)

      t.right( 90 )

      tree( 0.6 * length, level - 1)

      t.left( 45 )

      t.backward( length )

      return 

t.pensize( 3 )

t.color( 'green')

t.left (90)

tree( 100, 6 )

【注】需要答案,記得給小編留言呀

相關焦點

  • Python繪圖庫講解:4大常用庫你準備學哪個?
    最近有不少粉絲來問我,Python繪圖庫太多,我知不知道學哪一個?即使我選擇了某一個繪圖庫後,我也不知道怎麼學,我不知道第一步做什麼,也不知道接下來該怎麼做,四個字一學就忘。其實這也是我當時很困擾的一個問題,我當時在學習完numpy和pandas後,就開始了matplotlib的學習。我反正是非常崩潰的,每次就感覺繪圖代碼怎麼這麼多,繪圖邏輯完全一團糟,不知道如何動手。
  • 慢步學習,來一次二級Python語言備考,二級考試的環境基礎
    突然想起二級考試什麼的。發現筆者所在廣東省12月不開展計算機等級考試。不過沒關係,咱還是可以先來為下一次考試準備。2020年考試大綱(2018年版)現在考試都有一個大綱,有的放矢,按大綱走準沒錯。登入中國教育考試網,找到全國計算機等級考試考試大綱。
  • 百位世界繪畫大師之喜多川歌麿,藝渡文化高清藝術作品圖片集圖庫
    百位世界繪畫大師到了「浮世繪」,突然有種很情切的感覺,一方面是近鄰的作品名家,另一方面是與中國的藝術歷史有十分相近的地方,《浮世繪三傑》很好的詮釋了這種感覺,介紹給大家:總評:日本江戶時代浮世繪畫家。與葛飾北齋、安藤廣重有浮世繪三大家之稱,他也是第一位在歐洲受歡迎的日本木版畫家。
  • 「職場圖解初階訓練——繪文字」學員招募廣告(3月27日開學)
    Rosy老師團隊匯集多年實踐經驗以及2017年千人同練繪文字中搜集的大量學員的問題和解答,全新打造的簡單,實用的精品課程,不容錯過!!招募對象:零基礎的職場人士招募人數:100名,分成兩個班,每班50人學制:30天學費:200元/人本訓練班報名學員滿30人開班,限100
  • 同義詞詞向量訓練--python實現
    Boblee人工智慧碩士畢業,擅長及愛好python,基於python研究人工智慧、群體智能、區塊鏈等技術,並使用python開發前後端、爬蟲等
  • 華為官方解答為何微信保存的圖片不在圖庫顯示 - 愛集微APP
    集微網12月31日消息(文/數碼控),很多人在使用智慧型手機的時候會發現一些奇怪的事情,比如為何微信保存的圖片不在圖庫顯示,針對該問題,華為旗下的花粉俱樂部特地發文進行解答。花粉俱樂部認為以下情況,導致微信保存的圖片不在圖庫顯示:1.微信相冊被隱藏進入圖庫,在相冊頁籤 > > 隱藏相冊,查看微信相冊是否被隱藏,如果被隱藏,關閉「隱藏相冊」開關即可。
  • 慢步學習,備考二級python語言,程序的基本語法元素
    #我要學Python#繼續備考二級python語言。python程序的基本語法元素上一文簡單提及了二級python語言考試大綱及考試環境。現在開始進入考試內容的學習理解。程序的基本語法元素:程序格式框架、縮進、注釋、變量、命名、保留字、數據類型、賦值語句、引用。
  • 開課吧Python線上訓練營課前須知
    小課線上實戰訓練營,接下來你會進入到一個為期5天的體驗學習旅程~python小課--上課形式是什麼?本次Python線上實戰訓練體驗課營包含以下內容:python是什麼? 專業課包括【基礎語法+爬蟲精進+數據分析】三個課程,共51節,90+實操實戰訓練 學完全部課程,就可以利用快速全面的掌握python編寫所需的語法,建立編程思維,學會調用模塊分析數據掌握自動化辦公用
  • python二級考試大綱考試內容:類型判斷和類型間轉換
    咱繼續按二級考試大綱學習python。我們知道python的基本數據類型是數字和字符串。如:123 和一二三。我們認為123是數字,一二三是字符串,我們的智能是這樣告訴我們的。python語言當然也能分辨出來數字和字符串,因為不符合它定義的代碼都會報錯。我們這裡說的類型判斷,其實是通過函數獲取數據的類型。
  • python可視化庫大全
    matplotlib算是python比較底層的可視化庫,可定製性強、圖表資源豐富、簡單易用、達到出版質量級別。下面給出一些常用python庫的特點:再一一細說seabornSeaborn是基於matplotlib的圖形可視化python包。它提供了一種高度交互式界面,便於用戶能夠做出各種有吸引力的統計圖表。
  • python二級考試大綱內容:程序的三種控制結構
    #python#繼續學習python二級考試大綱內容:程序的三種控制結構順序結構、分支結構和循環結構這三種控制結構是編程的基礎組成部分,無論是準備考全國計算機等級考試還是單純是為了興趣而學習python,都必須掌握。
  • 計算機二級《Python語言程序設計 最新版》電子教案PDF,請收下
    今天給大家整理了電子版的全國計算機等級考試二級教程,Python 語言程序設計 ,後面有電子版截圖和下載。
  • 用Python 訓練自己的語音識別系統,這波操作穩了
    同時考慮到目前大多數的語音識別平臺都是藉助於智能雲,對於語音識別的訓練對於大多數人而言還較為神秘,故今天我們將利用python搭建自己的語音識別系統。最終模型的識別效果如下:實驗前的準備首先我們使用的python版本是3.6.5所用到的庫有cv2庫用來圖像處理;Numpy庫用來矩陣運算;Keras框架用來訓練和加載模型。
  • Python機器學習·微教程
    包含一些核心庫:numpy、scipy、pandas、matplotlib、ipython、sympy如果你不想這麼麻煩,那麼也可以使用傻瓜式一條龍安裝-Anaconda,這裡面預裝了python及一百多個庫。安裝好後,就可以在命令行鍵入「python」,就可以運行python了。
  • 慢步學習,二級python,數字類型及其運算
    咱繼續帶著二級Python程式語言的考試大綱學習。考試大綱中考試內容分七部分,其中第一部分Python 語言基本語法元素已經學完。筆者認為乾貨滿滿的是這兩篇。慢步學習,備考二級python語言,程序的基本語法元素
  • 用Python寫一個拼音輸入法
    1 代碼構造根據需求和實現步驟,寫3個python程序。第一個根據輸入的語料庫,計算漢字出現的頻次、漢字與前一個漢字共同出現的頻次和語料庫的總字數。第二個,首先根據「拼音漢字表」構造拼音與漢字的對應關係,將用戶輸入的拼音通過這個對應關係形成一個隱馬爾科夫模型。根據第一個程序得出的結果,使用維特比算法,計算得到概率最大的「字鏈」,將這個「字鏈」輸出為句子。
  • 用 Python 訓練自己的語音識別系統,這波操作穩了
    同時考慮到目前大多數的語音識別平臺都是藉助於智能雲,對於語音識別的訓練對於大多數人而言還較為神秘,故今天我們將利用python搭建自己的語音識別系統。首先我們使用的python版本是3.6.5所用到的庫有cv2庫用來圖像處理;Numpy庫用來矩陣運算;Keras框架用來訓練和加載模型。Librosa和python_speech_features庫用於提取音頻特徵。
  • 慢步學習二級python,字符串類型的操作:操作符,函數和方法
    繼續學習二級python考試的大綱內容:4.字符串類型的操作:字符串操作符,處理函數和處理方法#我要學Python#字符串類型的操作字符串和數值是python學習字符串類型數據的操作是學習python的基礎。字符串操作符字符串常見操作符有2個+ *在應用中的意義是 連接 和 重複如上圖,第一個指令,「愛」+「你」,得到字符串「愛你」。
  • 親媽級python乾貨分享!400集教程十電子書
    30天從零學會python技能,高效辦公,從職場中脫穎而出!立志成為最好的自己!一起悄悄變優秀變強大![給力]為什麼要學Python?那麼如何從零入門python?不論你是準備學習python或者已經學了一段時間的這份資料對你來說應該很有用的!
  • Python隨機森林 - CodeProject
    在隨機森林中,我們將數據集劃分成多個小部分,然後將每部分作為獨立的樹,其結果對自身之外的其他樹沒有影響。隨機森林獲得訓練數據並通過"Bagging = Bootstrap Aggregating"算法將其分割,該算法可通過避免過擬合和降低差異性來提高準確率。它一開始將數據集的60%劃分為獨立的決策樹,30%作為重疊數據集。