随机验证码实现

作者: 老黄爱Python | 来源:发表于2017-02-07 10:04 被阅读16次
    验证码是很多网站登陆注册的必选项,我们可以使用随机数来实现这一功能。

    需求:产生N位随机码,必须有数字和字母组成。

    1. 需求分析:

    1)随机码N位;
    2)最少包含1位数字或者1位字母;
    3)数字和字母也是随机产生。

    2. 实现思路:
    • 确定数字和字母个数;
    #-*-coding:utf-8 -*-
    import random
    tCode = 5    #随机码总数5
    numN = random.randint(1, 4) #数字个数1~4之间
    numC = tCode - numN
    print (numN, numC)
    

    执行结果:2,3(结果是随机的)

    • 产生相应的随机数字和随机字母;
      定义字符串数字和字母,并产生相应的随机结果:
    listN = '1234567890'                 #数字
    listC = 'abcdefghigklmnopqrstuvwxyz' #字母
    for x in range(numN):                #随机数字产生
        random.choice(listN) 
    for x in range(numC):                #随机字母产生
        random.choice(listC)
    
    • 代码实现:
      使用函数实现该需求:
      函数名:genTcodes
      函数参数:tCodeN,传入产生随机数个数
      返回值:随机码
      具体代码如下:
    #-*-coding:utf-8 -*-
    import random
    def genTcodes(tCodeN):
        numN = random.randint(1, 4) #数字个数1~4之间
        numC = tCodeN - numN
        print (numN, numC)
    
        listN = '1234567890'
        listC = 'abcdefghigklmnopqrstuvwxyz'
        tCodeS = ""                #保存随机码
        for x in range(numN):
            tCodeS += random.choice(listN)  #随机数字
        for x in range(numC):
            tCodeS += random.choice(listC)  #随机字符
        return tCodeS                       #返回随机码
    print (genTcodes(5))
    

    执行结果如下:
    1 4
    4ypwa

    总结:简单的随机码程序已经实现,但是我们发现字母和数字的位置不是随机的,怎么办?

    我们可以将每个位置打乱,实现真正随机。

    这样就能完美结局这个问题。后续当我们讲解列表时候继续优化这个需求。

    相关文章

      网友评论

        本文标题:随机验证码实现

        本文链接:https://www.haomeiwen.com/subject/blkpittx.html