进阶第十一课 Python模块之random
random就是随机的意思,在Python中就是按照指定范围和规则,做随机取数的工作。
看下例子:
>>> import random >>> random.random() 0.8899104894509411 >>> random.random() 0.19533630110531885
1、random.random()
在0到1之间取数。
2、random.randint(a,b)
其中a和b都是整数,看例子:
>>> random.randint(1,10)
8
取数范围从1到10之间的10个整数,即范围包含a,也包含b。
3、random.choice()
>>> random.choice('Hello!')
'o'
>>> random.choice('Hello!')
'l'
>>> random.choice('Hello!')
'!'
>>> random.choice('Hello!')
'o'
>>> random.choice('Hello!')
'e'
>>> random.choice('Hello!')
'H'
>>> random.choice('Hello!')
'l'
下面这个例子,由于范围值是一个字符串,那么返回值就是字符串中的随机一个字符。再看另一个例子:
>>> random.choice([1,3,[1,2,3],(1,2,3)]) 1 >>> random.choice([1,3,[1,2,3],(1,2,3)]) (1, 2, 3) >>> random.choice([1,3,[1,2,3],(1,2,3)]) [1, 2, 3] >>> random.choice([1,3,[1,2,3],(1,2,3)]) [1, 2, 3] >>> random.choice([1,3,[1,2,3],(1,2,3)]) 1 >>> random.choice([1,3,[1,2,3],(1,2,3)]) 3 >>> random.choice([1,3,[1,2,3],(1,2,3)]) 1 >>> random.choice([1,3,[1,2,3],(1,2,3)]) (1, 2, 3)
当choice的参数是一个列表时,看下返回值。
4、random.sample()
>>> random.sample([1,3,[1,2,3],(1,2,3),1,5,7,[7,8,9],100],3) [5, 100, (1, 2, 3)] >>> random.sample([1,3,[1,2,3],(1,2,3),1,5,7,[7,8,9],100],3) [[1, 2, 3], 3, 100] >>> random.sample([1,3,[1,2,3],(1,2,3),1,5,7,[7,8,9],100],3) [[7, 8, 9], 7, 1] >>> random.sample([1,3,[1,2,3],(1,2,3),1,5,7,[7,8,9],100],3) [3, [1, 2, 3], 1] >>> random.sample([1,3,[1,2,3],(1,2,3),1,5,7,[7,8,9],100],3) [1, 5, 7]
sample后面有2个参数,即sample(a,b)。其中a是一个序列,里面都是数字组成的元素:数字、元祖和序列;b是一个整数,指定返回几个唯一值。上面的例子中参数a有两个1,但是返回的3个值不会有2个1。
5、random.randrage()
看例子:
>>> random.randrange(1,3) 2 >>> random.randrange(1,3) 2 >>> random.randrange(1,3) 2 >>> random.randrange(1,3) 2 >>> random.randrange(1,3) 2
之前已经学过range这个函数,range(1,3)的范围包含1但不包含3。
6、下面看一个例子,随机生成一个5位编码,里面有数字、大写英语字母和小写英语字母。看例子:
>>> def code():
code=''
for i in range(5):
num=random.randrange(10)
Uc=chr(random.randrange(65,91))
Dc=chr(random.randrange(97,123))
fc=random.choice([num,Uc,Dc])
code+=str(fc)
return code
>>> import random
>>> code()
'81Ve2'
>>> code()
'1Sl37'
>>> code()
'1uwpj'
>>> code()
'oqBi5'
>>>
分析一下:
1)code是一个空白字符串;作为最终的5位随机字符串,里面可以有数字和大小写字母。
2)num是0到9任意一个数字。
3)Uc是任意一个大写字母。chr()函数,是把ascii中的一个数字转换为对应的符号,65-90对应A-Z;97-122对应a-z。
4)Dc是任意一个小写字母。
5)fc是在num、Uc和Dc三级随机字符中,再随机选取一个;这样每一位都可能是数字、大写字母或者小写字母。
6)把fc加入到code中。