日期:2020年3月6日
作者:Commas
注释:学习就是为了忘记,实现一个生成随机验证码的小案例;
如果您想了解更多有关Python的知识,那么请点《我的Python浅谈系列目录》
一、random模块初识
话不多说,直接上代码来查看random提供了哪些工具:
import random
for x in dir(random):
if not x.startswith("_"):
# 过滤掉私有方法
if x.islower():
# 过滤掉常量
print("random.{}()".format(x))
# =======控制台输出结果=======
random.betavariate()
random.choice()
random.choices()
random.expovariate()
random.gammavariate()
random.gauss()
random.getrandbits()
random.getstate()
random.lognormvariate()
random.normalvariate()
random.paretovariate()
random.randint()
random.random()
random.randrange()
random.sample()
random.seed()
random.setstate()
random.shuffle()
random.triangular()
random.uniform()
random.vonmisesvariate()
random.weibullvariate()
二、生成随机验证码
上面查看random模块
的工具很多,但是生成随机验证码,只需要两个工具即可,如下:
工具 | 说明 | 说明 |
---|---|---|
randint(a, b) | Return random integer in range [a, b], including both end points. | 随机返回一个ab之间(范围包括ab)的一个整数 |
choice(seq) | Choose a random element from a non-empty sequence. | 从非空序列中随机选出一个元素返回 |
随机验证码实现如下:
import random
def get_random_code(num_code):
"""
生成并返回随机验证码
:param num_code: 随机验证码位数
"""
list_code = []
for i in range(num_code):
# (1)随机生成三种字符
# (1-1)随机生成0~9的数字
num = str(random.randint(0, 9))
# (1-2)随机生成小写字母
lower_alphabet = chr(random.randint(97, 122))
# (1-3)随机生成大写字母
upper_alphabet = chr(random.randint(65, 90))
# (2)再次随机抽取一个字符
random_code = random.choice([num, lower_alphabet, upper_alphabet])
# (3)保存随机抽取的字符
list_code.append(random_code)
return "".join(list_code)
randon_num = get_random_code(6)
print("生成随机数:%s" % randon_num)
# =======控制台输出结果=======
生成随机数:JKmwc8
知识加油站:
chr(*args, **kwargs)
Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.
其中0~255(十进制)返回的是ASCII码对应的字符,可见度娘的《ASCII》;
如需了解编码,请看我的另一篇博客《原来编码就是这么简单》
真正的验证码还需要做显示的干扰,比如字符放大缩小,加点加线干预,色彩等等,这些实现都是后话啦……
版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/104693700