python常用模块之random模块

python常用模块之random模块

在程序中很多会用到随机字符,比如登陆网站的随机验证码,通过random模块可以很容易生成随机字符串

1.random.randrange():返回1-10之间的一个随机数

In [2]: random.randrange(0,10)
Out[2]: 1 In [3]: random.randrange(0,10)
Out[3]: 5 In [4]: random.randrange(0,10)
Out[4]: 2

2.random.randint():返回1-10之间的一个随机数

In [5]: random.randint(0,10)
Out[5]: 3 In [6]: random.randint(0,10)
Out[6]: 2 In [7]: random.randint(0,10)
Out[7]: 1

那么?random.randrange()random.randint()的功能是一样的,为什么还要说呢?举个例子看一下:

# random.randrange()
In [15]: random.randrange(0,1)
Out[15]: 0 In [16]: random.randrange(0,1)
Out[16]: 0 In [17]: random.randrange(0,1)
Out[17]: 0
# random .randint()
In [18]: random.randint(0,1)
Out[18]: 1 In [19]: random.randint(0,1)
Out[19]: 1 In [20]: random.randint(0,1)
Out[20]: 1 In [21]: random.randint(0,1)
Out[21]: 0

总而言之,randrange不会包括1,而randint会包括1

# 随机选取0-100之间的偶数
In [23]: random.randrange(0,100,2)
Out[23]: 62 In [24]: random.randrange(0,100,2)
Out[24]: 78 In [25]: random.randrange(0,100,2)
Out[25]: 54

3.randdom.random():返回一个随机浮点数

In [26]: random.random()
Out[26]: 0.6650128371458242 In [27]: random.random()
Out[27]: 0.7953723772675672

4.random.choice():返回一个给定数据集合中的字符

In [31]: random.choice("abcdef!@#$%")
Out[31]: '$' In [32]: random.choice("abcdef!@#$%")
Out[32]: '!'

5.random.sample():从多个字符中选取特定数量的字符

In [33]: random.sample("abcd!@#$",3)
Out[33]: ['@', 'c', 'd'] In [34]: random.sample("abcd!@#$",3)
Out[34]: ['b', '#', 'c']

6.生成随机字符串

In [35]: import string   # 导入string模块

In [36]: string.digits  # 数字
Out[36]: '0123456789' In [37]: string.ascii_letters # ASCII码表中的英文字母
Out[37]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' In [38]: string.ascii_lowercase # 小写英文字母
Out[38]: 'abcdefghijklmnopqrstuvwxyz' In [39]: string.ascii_uppercase # 大写英文字母
Out[39]: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' # 开始生成随机字符串
In [3]: random.sample("string.digits + string.ascii_letters",4) # 让数字和大小写的英文字母相加形成一个随机字符串池
Out[3]: ['i', 't', ' ', 's'] In [4]: random.sample("string.digits + string.ascii_letters",4)
Out[4]: ['t', 'g', 'n', 'r'] In [5]: random.sample("string.digits + string.ascii_letters",4)
Out[5]: ['n', '.', 's', 'i']

7.洗牌

In [6]: a = list(range(0,10))

In [7]: a
Out[7]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In [8]: random.shuffle(a) # 打乱顺序称为洗牌 In [9]: a
Out[9]: [7, 9, 2, 8, 6, 0, 5, 4, 3, 1] In [10]: random.shuffle(a) In [11]: a
Out[11]: [0, 4, 5, 8, 1, 3, 6, 7, 9, 2]
上一篇:RabbitMQ 消息队列


下一篇:百万年薪python之路 -- 列表练习