生成隨機數模塊:random
作用:生成隨機浮點數、整數、字符串,甚至幫助你隨機選擇列表序列中的一個元素,打亂一組數據等。
random.random()函數是這個模塊中最常用的方法了,它會生成一個隨機的浮點數,范圍是在0.0~1.0之間。
random.uniform()正好彌補了上面函數的不足,它可以設定浮點數的范圍,一個是上限,一個是下限。
random.randint()隨機生一個整數int類型,可以指定這個整數的范圍,同樣有上限和下限值,python random.randint。
random.choice()可以從任何序列,比如list列表中,選取一個隨機的元素返回,可以用於字符串、列表、元組等。
random.shuffle()如果你想將一個序列中的元素,隨機打亂的話可以用這個函數方法。
random.sample()可以從指定的序列中,隨機的截取指定長度的片斷,不作原地修改。
'''隨機函數,random生成的只能是數,不是可迭代對象沒有方法.__iter__()''' import random#隨機生成數字 a = random.random() #隨機生成0到1中間的小數 a = random.randint(1,3) #隨機生成[1,3]1到3三個數的任意一個,兩個參數必須寫,單獨寫一個報錯TypeError: randint() missing 1 required positional argument: 'b' a = random.randrange(3) #隨機生成(0,2]三個數的任意一個 a = random.choice([1,3,3,[33,44,]]) #隨機顯示序列中的元素 a = random.uniform(1,3) #隨機產生實數(整數、小數、無限循環小數)
list_t = [1,3,4,'sigle',5]
a = random.sample(list_t,2)#從指定序列中獲取指定長度的個數,即從list_t中隨機拿出2個元素
a = random.suffle(list_t)#將指定序列中的元素隨機打亂 print(a) '''練習:4位包含字母數字驗證碼的生產 思路: 1、需要4位驗證碼且是隨機的即項目要求通過運算最后返回一個4位的字符串 2、4位驗證碼的每一位都需要是隨機的,且應在包含有所有數字及字符的序列中選擇 3、故需先要生成帶有所有數字及字母的序列,然后從中選4次,拼接成一個4位字符串 4、隨機選擇參數需要用到模塊random模塊 ''' import random def verify_fun(): # while True: verify = ''#創建一個空的字符串,當拼接成4位的字符串返回,即實現需求 for i in range(1,5): #循環4次,此處如用random.randint會報錯不是可迭代的對象 ver_num = random.randint(0,9)#隨機生成0,9中任意數字 # ver_num = chr(random.randint(48,57))##ASCII碼表中48~57分別表示0~9 ver_upper = chr(random.randint(65,90))#ASCII碼表中65~90分別表示a~z,通過chr(a)可將數字轉換成對應字母 ver_lower = chr(random.randint(97,122))#ASCII碼表中97~122分別表示A~Z choic_table = [ver_num,ver_lower,ver_upper]#生成一個帶有數字和字母的列表 single_str = str(random.choice(choic_table)) verify += single_str #連續遞加拼接,生成目標字符串 return verify#verify是全局變量,如果在前面將verify放到for里面就是局部變量,如果在for外調用,只會得到一個數,因為每次循環,開始都會將verify上次的值重新賦值為空。
#如果return放到for里面就會執行一次就結束,因為函數中一遇到return函數就會結束,不再運行
print(verify_fun())
注:
1、字符串拼接只能是字符串與字符串,single_str拼接時它必須是字符串類型才行: TypeError: must be str, not int
2、局部變量的含義,當變量verify在for里時,在for外調用verfiy變量會報如下錯誤:Local variable 'verify' might be referenced before assignment less... (Ctrl+F1)
This inspection warns about local variables referenced before assignment.