Python學習【第十三篇】隨機數相關:random模組&string模組
一、概述
隨機數在程式設計中的屬於比較基礎的內容,主要用於驗證場景(如驗證碼,生成賬號對應的密碼等),今天結合random模組和string模組來談談python中隨機數那些事兒。
二、隨機數實現相關模組
2.1 random模組
- random.random()
返回一個隨機浮點數。
>>> import random
>>> print(random.random())
0.1955361585993899
>>> print(random.random())
0.5912462104266011
- random.randint(a,b)
隨機返回a到b之間的一個整型數,注意包括b。
>>> print(random.randint(1, 3))
1
>>> print(random.randint(1, 3))
3
>>> print(random.randint(1, 3))
2
>>> print(random.randint(1, 3))
3
- random.randrange(start, stop, step=1)
返回一個隨機整型數,但不包括stop這個值,start和step為可選項,預設值分別為0和1。
>>> print(random.randrange(6, step = 2))
2
>>> print(random.randrange(6, step = 2))
3
>>> print(random.randrange(6, step = 2))
3
>>> print(random.randrange(3, 6, step = 2))
3
>>> print(random.randrange(3, 6, step = 2))
3
>>> print(random.randrange(3, 6, step = 2)) # 如果start和stop之間的區間太小,然後有設定了start和step,實際取值範圍很有限
5
- randome.sample(population, k)
從Population中隨機抽取k個值來,以列表形式輸出。注意這裡的Population必須為一個序列或列表。
>>> print(random.sample([1,2,3,4,5],3))
[2, 1, 5]
>>> print(''.join(random.sample('Hello world', 6))) # 通過join拼接輸出即可得到一般的隨機數格式
6 0da09
ellwor
2.2 string模組
- string.ascii_letters
返回包括所有字母在內的大小寫字串。
>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
- string.ascii_lowercase
返回包含所有小寫字母在內的字串。
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
- string.ascii_uppercase
返回包含所有大寫字母在內的字串。
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
- string.digits
返回0-9數字字串。
>>> string.digits
'0123456789'
- string.punctuation
以字串形式返回所有特殊字元。
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
三、實戰生成隨機數
結合random和string實現
>>> import string, random
>>> string2 = random.sample(string.ascii_letters + string.punctuation, 12)
>>> print(''.join(string2))
kEr>];)<Lu:Z
增強版
上述程式雖然基本實現了生成隨機數的需求,但是隨機數的隨機性感覺還是比較low,下面使用編輯器來一個增強版的:
import random, string
checkcode = ''
string1 = '%*^@#!'
for i in range(4):
current = random.randrange(0, 4)
if current != i:
temp = ''.join(random.sample(string.ascii_letters + string1, 3))
else:
temp = random.randrange(0, 9)
checkcode += str(temp)
print(checkcode)
輸出:
sSynyHf!gvPt
增強版程式的不足之處在於隨機數的長度不固定,
固定長度版
該版本解決上述增強版中隨機數長度不固定的問題,看起來更簡單。
import random, string
checkcode = ''
string1 = '%*^@#!'
for i in range(8):
if i % 2 == 0:
temp = ''.join(random.sample(string.ascii_letters + string1, 2))
else:
temp = str(random.randint(0, 9))
checkcode += temp
print(checkcode)
輸出:
TC1Tq6wz2gk0
相關文章
- Python模組學習:random 隨機數生成Pythonrandom隨機
- python–模組之random隨機數模組Pythonrandom隨機
- Python生成隨機數random模組Python隨機random
- python random隨機模組使用Pythonrandom隨機
- Python隨機數生成模組random詳解Python隨機random
- Python常用模組(random隨機模組&json序列化模組)Pythonrandom隨機JSON
- Python 隨機(random)模組的不可預測之美Python隨機random
- python 使用 random模組生成隨機測試資料Pythonrandom隨機
- Java學習關於隨機數工具類--Random類Java隨機random
- python random模組Pythonrandom
- python_random模組Pythonrandom
- 序列化模組,隨機數模組,os模組,sys模組,hashlib模組隨機
- Python中的模組--SSH相關模組Python
- [Python模組學習] glob模組Python
- random 模組random
- python 時間相關模組Python
- Python分享之數學與隨機數 (math包,random包)Python隨機random
- python—random模組使用詳解Pythonrandom
- JavaScript相關的模組機制JavaScript
- Python學習【第十四篇】shutil模組Python
- 隨機函式DBMS_RANDOM.STRING隨機函式random
- Python3內建模組之玩出花兒的random隨機方法小結Pythonrandom隨機
- JavaScript 模組相關JavaScript
- Random獲取隨機數random隨機
- Python標準庫12 數學與隨機數 (math包,random包)Python隨機random
- Python學習之模組Python
- Python學習——xml模組PythonXML
- Python time模組學習Python
- python模組學習:CookiePythonCookie
- Python模組學習:atexitPython
- Python模組學習:fileinputPython
- python之pymsql模組相關介紹PythonSQL
- Python學習【第十二篇】time & datetime模組Python
- 隨機數種子(random seed)隨機random
- oracle隨機數 — dbms_randomOracle隨機random
- java Math數學工具及Random隨機函式Javarandom隨機函式
- Python學習——hashlib模組Python
- Python學習之常用模組Python