1. 程式人生 > >day5-隨機數相關:random模塊&string模塊

day5-隨機數相關:random模塊&string模塊

特殊字符 基本實現 字符串 如果 默認 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之間的一個整型數,註意包括b
      1 >>> 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和1
      1 >>> print
    (random.randrange(5,step=2)) 2 1 3 >>> print(random.randrange(5,step=2)) 4 0 5 >>> print(random.randrange(5,step=2)) 6 1 7 >>> print(random.randrange(5,step=2)) 8 3 9 >>> print(random.randrange(1,5,step=2)) 10 1 11 >>> print(random.randrange(1,5,step=2)) 12
    1 13 >>> print(random.randrange(1,5,step=2)) 14 1 15 >>> print(random.randrange(1,5,step=2)) #如果start和stop之間的區間太小,然後有設定了start和step,實際取值範圍很有限 16 3
  • 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模塊