python ranndom模块及生成验证码
python的random模块用于生成随机数,下面介绍一下random模块的常用方法:
取随机小数: 数学计算 random.random() 用于生成一个0-1的随机浮点数 0<=n<1.0 random.uniform(a,b) 生成一个指定范围内的随机浮点数, a<=n<=b
取随机整数: 彩票 抽奖 random.randint(a,b) 取一个指定范围内的整数 a<=n<=b random.randrange(start,stop,step) 在指定范围内,按基数递增的集合内取一个随机数,如random.randrange(10,100,2),结果相当于从[10,12,14,...98]序列中获取一个随机数。
从一个序列中随机取值: 抽奖
random.choice() 从序列中随机选择一个返回个数为
random.sample() 从序列中随机选择多个返回,返回的个数为函数的第二个参数
乱序:
random.shuffle() 打乱一个列表的顺序,在原列表的基础上直接进行修改,节省空间
验证码的生成: 6位数字验证码: s = '' for i in range(6): num = random.randint(0,9) s += str(num) print(s) 函数版本的: def code(n=6): s = '' for i in range(n): num = random.randint(0,9) s += str(num) return s print(code(4)) print(code()) 6位数字+字母验证码: def code(n = 6): s = '' for i in range(n): # 生成随机的大写字母,小写字母,数字各一个 num = str(random.randint(0,9)) alpha_upper = chr(random.randint(65,90)) alpha_lower = chr(random.randint(97,122)) res = random.choice([num,alpha_upper,alpha_lower]) s += res return s print(code(4)) print(code()) 进阶: def code(n = 6,alpha = True): s = '' for i in range(n): num = str(random.randint(0,9)) if alpha: alpha_upper = chr(random.randint(65,90)) alpha_lower = chr(random.randint(97,122)) num = random.choice([num,alpha_upper,alpha_lower]) s += num return s print(code(4,False)) print(code(alpha=False))