# 36. random模块 - 随机模块
# rendom随机模块
随机模块:在某个范围内取到的每一个值的概率是相同的
常用随机模块被我分为四个部分,随机小数、随机整数、随机抽取、打乱顺序。
# 随机小数
# 在 0 - 1 之内随机取小数 - random
import random
print(random.random())
执行结果:
0.35509263258987933
# 在指定的范围内取随机小数 - uniform
import random
print(random.uniform(1,3))
print(random.uniform(1,3))
执行结果:
1.2834207022093207
2.1313791664762416
# 随机整数
# 在指定范围内取整数(顾尾) - randint
什么意思呢,就是比如给出(1,2),那么2是有机率匹配出,因为randint是顾头又顾尾
import random
print(random.randint(1,3))
print(random.randint(1,3))
print(random.randint(1,3))
执行结果:
1
1
3
# 在指定范围内取整数(不顾尾)-rendrange
什么意思呢,就是比如给出(1,2),那么2是不可以匹配出的,因为rendrange是顾头不顾尾
import random
print(random.randrange(1,3))
print(random.randrange(1,3))
print(random.randrange(1,3))
执行结果:
2
2
2
# 随机抽取
# 随机抽取一个值 - choice
import random
so = [1,2,3,"111",{"k":"v"},(111,222),{111,222},6,7,4,5,8,9]
print(random.choice(so))
执行结果:
{222, 111}
随机抽取列表中的一个值
# 随机抽取多个值 - sample
import random
so = [1,2,3,"111",{"k":"v"},(111,222),{111,222},6,7,4,5,8,9]
print(random.sample(so,2))
执行结果:
[(111, 222), 2]
随机抽取列表中的二个值
# 打乱顺序 - shuffle
注意:shuffle方法只能用于可改、有顺序的数据类型才可以打乱顺序
import random
so = [1,2,3,"111",{"k":"v"},(111,222),{111,222},6,7,4,5,8,9]
random.shuffle(so)
print(so)
执行结果:
[(111, 222), '111', 1, 6, 7, 2, 3, {'k': 'v'}, 9, {222, 111}, 8, 5, 4]
# 练习题
# 随机生成验证码
# 随机生成验证码 - 全整数
随机生成4位数的验证码,全整数
第一种方法 - 有点没水平
import random
so = []
wo = []
for i in range(10):
so.append(str(i))
random.shuffle(so)
for i in range(4):
wo.append(so[i])
print(''.join(wo))
执行结果:
3569
第二种方法 - 比较高大上
import random
## 普通版
so = ''
for i in range(4):
soo = random.randint(0,9)
so += str(soo)
print(so)
执行结果:
7964
## 函数版
def cold(n=4):
so = ''
for i in range(n):
soo = random.randint(0, 9)
so += str(soo)
return so
print(cold())
print(cold(6))
执行结果:
6045
607207
# 随机生成验证码 - 整数+字母
随机生成6位数的验证码,整数+字母
import random
so = []
wo = ''
for i in range(9):
so.append(str(i))
for i in range(65,91):
so.append(chr(i))
for i in range(97,123):
so.append(chr(i))
random.shuffle(so)
for i in range(6):
wo += so[i]
print(wo)
执行结果:
zUckPB
# 随机生成验证码-可全整数-可数字+字母
## 默认生成6位验证码,数字+字母
import random
def code(time = 6, pattern = True):
code_result = ''
for i in range(time):
digit = str(random.randint(0,9))
if pattern:
minuscule = chr(random.randint(97,122))
majuscule = chr(random.randint(65,90))
digit = random.choice([digit,minuscule,majuscule])
code_result += digit
return code_result
code = code()
print(code)
执行结果:
z3qRD594