1. 程式人生 > >Python標準庫詳解——turtle、random、time

Python標準庫詳解——turtle、random、time

目錄

前言

2. 畫筆

前言

公眾號要發一個python標準庫介紹,我先記錄到本部落格中,後面再過渡過去。這三個標準庫是今年計算機python二級大綱中提到的3個標準庫,不難但是是比較基礎但庫,也需要掌握。

一、turtle庫

turtle庫是python的內部庫,使用時直接匯入即可,這裡先放一段程式碼看看這個庫能實現什麼效果。

1、一個小例子

# coding=utf-8
import turtle # 匯入python自帶的turtle庫
import time

turtle.pensize(5) # 設定畫筆的寬度為5畫素
turtle.pencolor("yellow") # 設定當前畫筆顏色為黃色
turtle.fillcolor("red") # 繪製圖形的填充顏色為紅色

turtle.begin_fill() # 準備開始填充圖形
for _ in range(5):  # 這個迴圈的用途是迴圈5次,無需關注_的實際含義
    turtle.forward(200) # 向當前畫筆方向移動200畫素長度
    turtle.right(144) # 順時針移動144°
turtle.end_fill()  # 填充完成
time.sleep(2) # 設定2秒後進行後續步驟

turtle.penup()  # 提起筆移動,不繪製圖形,用於另起一個地方繪製
turtle.goto(-150, -120)  #將畫筆移動到座標為(-150,-120)的位置
turtle.color("violet") # 同時設定pencolor和fillcolor
turtle.write("Done", font=('Arial', 40, 'normal')) # 寫文字,Done為文字內容,font是字型的引數,分別為字型名稱,大小和型別

turtle.mainloop() # 告訴視窗等待使用者進行某些操作,暫時不用考慮

效果圖:

從上面的例子裡,我們可以大概看出來這個turtle庫是python內建的一個簡單繪圖工具,想象一個小烏龜,在一個橫軸為x、縱軸為y的座標系原點,(0,0)位置開始,它根據一組函式指令的控制,在這個平面座標系中移動,從而在它爬行的路徑上繪製了圖形。在本例中這個圖形就是上面的效果圖。

2、turtle繪圖的基礎知識

1. 畫布(canvas)

畫布就是turtle為我們展開用於繪圖區域,我們可以設定它的大小和初始位置,turtle.screensize(canvwidth=None, canvheight=None, bg=None),引數分別為畫布的寬(單位畫素), 高, 背景顏色。

#設定畫布大小
turtle.screensize(800,600, "green")  # 引數分別為畫布的寬(單位畫素), 高, 背景顏色。

turtle.setup(width=0.5, height=0.75, startx=None, starty=None),引數:width, height: 輸入寬和高為整數時, 表示畫素; 為小數時, 表示佔據電腦螢幕的比例,(startx, starty): 這一座標表示矩形視窗左上角頂點的位置, 如果為空,則視窗位於螢幕中心。

# 畫布設定
turtle.setup(width=800,height=800, startx=100, starty=100)
# 或者
turtle.setup(width=0.6,height=0.6)

2. 畫筆

2.1 畫筆的狀態

        在畫布上,預設有一個座標原點為畫布中心的座標軸,座標原點上有一隻面朝x軸正方向小烏龜。這裡我們描述小烏龜時使用了兩個詞語:座標原點(位置),面朝x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態。

2.2 畫筆的屬性

        畫筆(畫筆的屬性,顏色、畫線的寬度等)

  • turtle.pensize():設定畫筆的寬度;
  • turtle.pencolor():沒有引數傳入,返回當前畫筆顏色,傳入引數設定畫筆顏色,可以是字串如"green", "red",也可以是RGB 3元組。
  • turtle.speed(speed):設定畫筆移動速度,畫筆繪製的速度範圍[0,10]整數,數字越大越快。

2.3 繪圖命令

         操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運動命令,一種為畫筆控制命令,還有一種是全域性控制命令。

(1)畫筆運動命令

(2)畫筆控制命令

(3)全域性控制命令

(4)其他命令

二、random庫

在使用python過程中會遇到隨機數的使用,那麼怎麼使 a 隨機生成一個數值呢,來研究一下random的部分程式。  

1、隨機浮點數

random.uniform() 用於生成指定範圍內的浮點數

import random # 首先還是要匯入random這個模組
a = random.uniform(2,10) # 兩個引數,一個是上限,一下是下限
print(a)

結果:3.0268555183487953

2、隨機整數

random.randint() 用於選取指定範圍內的整數

a  = random.randint(10,80)
print(a)

結果:35

random.randrange() 用於隨機選取0—100之間的隨機偶數

a = random.randrange(0,100,2)
print(a)

結果:54

3、隨機字元

random.choice() 用於隨機選取指定字串中的字元

a = random.choice ( ['apple', 'pear', 'peach', 'orange', 'lemon'] )
print(a)

結果:lemon

random.sample() 執行之後 a 就會隨機選取字串中的字元

a = random.sample('qwertyuiop',3) # 隨機選3個
print(a)

結果:['p', 'e', 'i']

4、隨機洗牌

random.shuffle() 用於將一個列表中的元素打亂

a = ["Python", "is", "powerful", "simple", "and so on..."]
random.shuffle(a)
print(a)

結果:['powerful', 'simple', 'and so on...', 'is', 'Python']

5、另:numpy裡的random方法

在上面提到的生成隨機數或者隨機字元,都是單個的輸出,如果說現在的需求時生成一個矩陣,裡面的元素時隨機數,那麼我們就需要用到numpy庫中的random方法。同理,這個矩陣中的隨機數如果要整數的話,就使用random.randint() 函式,比如下面這個例子

from numpy import random # 從numpy庫中匯入random方法
a = random.randint(0, 10, size=[3, 3]) # 多維陣列中的隨機整數在0到10之間,陣列大小是3*3
print(a)

結果:

[[1 4 8]  [2 9 4]  [1 0 0]]

三、time庫

Python具有良好的時間和日期管理功能。實際上,計算機只會維護一個掛鐘時間(wall clock time),這個時間是從某個固定時間起點到現在的時間間隔。時間起點的選擇與計算機相關,但一臺計算機的話,這一時間起點是固定的。時間間隔是以秒為單位的浮點小數。每個時間戳都以自從1970年1月1日午夜(曆元)經過了多長時間來表示。Python 的 time 模組下有很多函式可以轉換常見日期格式。

1、獲取當前時間戳

如函式time.time()用於獲取當前時間戳, 如下例項:

import time  # 匯入time庫
ticks = time.time()  # 返回當前時間戳
print("當前時間戳為:", ticks)

結果:當前時間戳為: 1540291115.793172

2、獲取當前時間

time.localtime() 用於獲取當前時間,從返回浮點數的時間戳方式向時間元組轉換,只要將浮點數傳遞給如localtime之類的函式。

localtime = time.localtime(time.time())
print("本地時間為 :", localtime)

結果:本地時間為 : time.struct_time(tm_year=2018, tm_mon=10, tm_mday=23, tm_hour=18, tm_min=38, tm_sec=35, tm_wday=1, tm_yday=296, tm_isdst=0)

解讀:struct_time元組裡面的屬性名稱是:年、月、日、小時、分鐘、秒、一週的第幾日、一年的第幾日,是否為夏令時

3、獲取格式化的時間

我們可以使用 time 模組的 strftime() 方法來格式化日期

import time

# 格式化成2016-03-20 11:45:39形式
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

# 格式化成Sat Mar 28 22:24:24 2016形式
print(time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))

# 將格式字串轉換為時間戳
a = "Sat Mar 28 22:24:24 2016"
print(time.mktime(time.strptime(a, "%a %b %d %H:%M:%S %Y")))

結果:

2018-10-23 18:51:41 Tue Oct 23 18:51:41 2018 1459175064.0

那麼這中間的Y、m、d等等這些的含義是什麼呢?

python中時間日期格式化符號:

  • %y 兩位數的年份表示(00-99)
  • %Y 四位數的年份表示(000-9999)
  • %m 月份(01-12)
  • %d 月內中的一天(0-31)
  • %H 24小時制小時數(0-23)
  • %I 12小時制小時數(01-12)
  • %M 分鐘數(00=59)
  • %S 秒(00-59)
  • %a 本地簡化星期名稱
  • %A 本地完整星期名稱
  • %b 本地簡化的月份名稱
  • %B 本地完整的月份名稱
  • %c 本地相應的日期表示和時間表示
  • %j 年內的一天(001-366)
  • %p 本地A.M.或P.M.的等價符
  • %U 一年中的星期數(00-53)星期天為星期的開始
  • %w 星期(0-6),星期天為星期的開始
  • %W 一年中的星期數(00-53)星期一為星期的開始
  • %x 本地相應的日期表示
  • %X 本地相應的時間表示
  • %Z 當前時區的名稱
  • %% %號本身

你想要什麼格式的時間表示形式,都可以得到哦

其實啊,calendar庫還可以輸出日曆格式的時間,每個庫的方法數量非常多這裡就不一一說明,先對每個庫有映象,遇到實際問題後查閱嚴謹的官方文件。嗯。

參考文章: