Python隨機函數(shù)庫random

相信大家都遇到過這樣的場景,比如創(chuàng)建產品、賬號以及其他的數(shù)據(jù)的時候,會有唯一性限制,因此產品名稱等每次都必須不同,但是我們沒必要每次都專門針對這樣一個字段去設計不同的測試數(shù)據(jù)。
這種情況可以使用隨機函數(shù)來處理,隨機生成字符串,當然也可能會重復,但是只要設置的字符串的長度足夠長,那么發(fā)生重復的概率極小。
需要隨機函數(shù),就需要用到隨機函數(shù)庫random,這是python自帶的標準庫:

import random

random庫主要有如下函數(shù):

函數(shù)名 說明 舉例
random() 生成一個0~1之間的隨機浮點數(shù),范圍 0 <= n < 1.0 random.random()
uniform(a,b) 返回a, b之間的隨機浮點數(shù),范圍[a, b]或[a, b), 取決于四舍五入,a不一定要比b小 random.uniform(1,5)
randint(a, b) 返回a, b之間的整數(shù),范圍[a, b],注意:傳入?yún)?shù)必須是整數(shù),a一定要比b小 random.randint(0, 100)
randrang([start], stop[, step]) 類似range函數(shù),返回區(qū)間內的整數(shù),可以設置step。 random.randrang(1, 10, 2)
choice(seq) 從序列seq中隨機讀取一個元素 random.choice([1,2,3,4,5])
choices(seq,k) 從序列seq中隨機讀取k個元素,k默認為1 random.choices([1,2,3,4,5], k=3)
shuffle(x) 將列表中的元素打亂,俗稱為洗牌。會修改原有序列。 random.shuffle([1,2,3,4,5])
sample(seq, k) 從指定序列中隨機獲取k個元素作為一個片段返回,sample函數(shù)不會修改原有序列 random.sample([1,2,3,4,5], 2)

random庫中的大多數(shù)函數(shù)使用時,都需要先設計一個序列。如果我們不想每次都去定義,而只是想隨機取出一些數(shù)字、字母組合的話,就需要用到另一個標準庫string:

import string

用string庫主要用里面定義的一些字符串常量,比如string.ascii_letters為所有的大小寫字母,其他涉及的字符串常量如下:

常量 說明
ascii_lowercase 'abcdefghijklmnopqrstuvwxyz' a-z全小寫字母
ascii_uppercase 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' A-Z全大寫字母
ascii_letters ascii_lowercase + ascii_uppercase 所有大小寫字母
digits '0123456789' 0-9數(shù)字集合
hexdigits digits + 'abcdef' + 'ABCDEF' 十六進制集合
octdigits '01234567' 八進制集合
punctuation !"#$%&'()*+,-./:;<=>?@[]^_`{|}~ 特殊字符組合
printable digits + ascii_letters + punctuation + whitespace 所有字符集合

string和random組合使用舉例:

import random
import string

s = string.digits + string.ascii_letters    # 組合數(shù)字與字母的序列
print(random.sample(s, 6))            # 隨機取出6個字母和數(shù)字的組合

運行結果

['3', '1', 'c', 'W', '7', 'Z']

自動化實例:

import random
import string
from time import sleep
from selenium import webdriver

# 生成隨機數(shù)
# 組合數(shù)字與字母的序列
s = string.digits + string.ascii_letters  
# 隨機取出6個字母和數(shù)字的組合并合并成字符串
random_data = ''.join(random.sample(s, 6))   

# 使用生成的隨機數(shù)搜索
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
# 使用固定值+隨機數(shù)據(jù)進行搜索
driver.find_element_by_id('kw').send_keys('劉德華' + random_data)
driver.find_element_by_id('su').click()
sleep(5)
driver.quit()

自己敲一遍試試!
學不會只有一種原因,就是懶!

懶死的
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,626評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 如果把人體比作一臺機器,那么血管就像一個復雜的管道系統(tǒng),連接各個零件,輸送營養(yǎng)、排出廢物。 一旦“生銹”或“堵塞”...
    自然女神閱讀 322評論 0 0
  • 眼皮一眨,便是又一個周末到來。 早飯九點多才糊弄著吃進肚子里,午飯時間,咖啡館帶倆孩再糊弄一頓,孩子爸也滿肚子心事...
    在生活的河里洗澡閱讀 393評論 0 9
  • 昨天回家時小馬哥問我,來南方這么久適應了嗎? 2016-06-24 油菜花 生活著的油菜花 昨天回家時小馬哥問我,...
    樂媽永烈閱讀 384評論 0 0

友情鏈接更多精彩內容