Python標準庫詳解——turtle、random、time
目錄
前言
公眾號要發一個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庫還可以輸出日曆格式的時間,每個庫的方法數量非常多這裡就不一一說明,先對每個庫有映象,遇到實際問題後查閱嚴謹的官方文件。嗯。
參考文章: