【常用模块】:random模块之生成随机验证码案例

日期: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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章