day5-隨機數相關:random模塊&string模塊
阿新 • • 發佈:2017-12-25
特殊字符 基本實現 字符串 如果 默認 sam 那些事兒 start blog
一、概述
隨機數在程序設計中的屬於比較基礎的內容,主要用於驗證場景(如驗證碼,生成賬號對應的密碼等),今天結合random模塊和string模塊來談談python中隨機數那些事兒。
二、隨機數實現相關模塊
2.1 random模塊
- random.random()
返回一個隨機浮點數1 >>> import random 2 >>> print(random.random()) 3 0.7998107271564998 4 >>> print(random.random()) 5 0.7837981404514991
- random.randint(a,b)
隨機返回a到b之間的一個整型數,註意包括b1 >>> print(random.randint(1,3)) 2 1 3 >>> print(random.randint(1,3)) 4 2 5 >>> print(random.randint(1,3)) 6 1 7 >>> print(random.randint(1,3)) 8 3
- random.randrange(start, stop, step=1)
返回一個隨機整型數,但不包括stop這個值,start和step為可選項,默認值分別為0和11 >>> print
- randome.sample(population, k)
從Population中隨機抽取k個值來,以列表形式輸出。註意這裏的Population必須為一個序列或列表。1 >>> print(random.sample([1,2,3,4,5],3)) 2 [3, 2, 5] 3 >>> print(random.sample(‘asldf9090asm‘,5)) 4 [‘a‘, ‘l‘, ‘d‘, ‘9‘, ‘0‘] 5 >>> print(‘‘.join(random.sample(‘asldf9090asm‘,5))) #通過join拼接輸出即可得到一般的隨機數格式 6 0da09
2.2 string模塊
- string.ascii_letters
返回包括所有字母在內的大小寫字符串1 >>> import string 2 >>> string.ascii_letters 3 ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘
- string.ascii_lowercase
返回包含所有小寫字母在內的字符串1 >>> import string 2 >>> string.ascii_lowercase 3 ‘abcdefghijklmnopqrstuvwxyz‘
- string.ascii_uppercase
返回包含所有大寫字母在內的字符串1 >>> import string 2 >>> string.ascii_uppercase 3 ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ‘ 4 >>>
- string.digits
返回0-9數字字符串1 >>> import string 2 >>> string.digits 3 ‘0123456789‘
- string.punctuation
以字符串形式返回所有特殊字符1 >>> import string 2 >>> string.punctuation 3 ‘!"#$%&\‘()*+,-./:;<=>?@[\\]^_`{|}~‘
三、實戰生成隨機數
- 結合random和string實現
1 >>> import string,random 2 >>> string2=random.sample(string.ascii_letters+string.punctuation,12) 3 >>> print(‘‘.join(string2)) 4 _oCSe,)dcBm| 5 >>>
- 增強版
上述程序雖然基本實現了生成隨機數的需求,但是隨機數的隨機性感覺還是比較low,下面來一個增強版的1 import random,string 2 checkcode=‘‘ 3 string1=‘!@#$%&‘ #特殊字符 4 for i in range(4): 5 current = random.randrange(0,4) 6 if current != i: 7 #temp = chr(random.randint(65,99)) 8 temp = ‘‘.join(random.sample(string.ascii_letters+string1, 3)) 9 else: 10 temp = random.randrange(0,9) 11 checkcode += str(temp) 12 13 print(checkcode) 14 15 運行結果: 16 Lbksxh#ZB%ar
增強版程序的不足之處在於隨機數的長度不固定,有待完善…
day5-隨機數相關:random模塊&string模塊