page contents

python基础编程100例:第47期-验证码验证

本文讲述了python基础编程100例:第47期-验证码验证!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2022-03-iDAnFHPM6239238fe9b7b.png

本文讲述了python基础编程100例:第47期-验证码验证!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

第47期-验证码验证

1 问题描述

用户登录网站经常需要输入验证码,验证码包含大小写字母和数字,随机出现。用户输入验证码时不区分大小写,只要各字符出现顺序正确即可通过验证。   

请写一个程序完成验证码的匹配验证,随机生成四位数的验证码如Qs2X(生成数字概率为1/5,大写字母和小写字母概率各为2/5) 

如果用户输入验证码正确,输出“验证码正确”,输入错误时输出“验证码错误,请重新输入”,再重新生成验证码让用户输入,输入五次错误时输出“您已用光了验证机会”。


网站上的验证码的作用是保护网站安全,一般网站都要通过验证码来防止机器大规模注册,机器暴力破解数据密码等危害。

手机的短信和语音验证码是要确定这个手机是用户自己的。

其实最后都是为了验证,这个操作是个人在做而不是机器,证明我是我的过程


2 解题思路

第一步: 由于有生成概率,所以需要使用random模块

第二步: 五次输入机会,需要使用for循环


3 解题方法

'''用户登录网站经常需要输入验证码,验证码包含大小写字母和数字,随机出现。

用户输入验证码时不区分大小写,只要各字符出现顺序正确即可通过验证。   

请写一个程序完成验证码的匹配验证,随机生成四位数的验证码如Qs2X(生成数字概率为1/5,大写字母和小写字母概率各为2/5) 

如果用户输入验证码正确,输出“验证码正确”,输入错误时输出“验证码错误,请重新输入”,再重新生成验证码让用户输入,

输入五次错误时输出“您已用光了验证机会”。'''

import random

n = 0

def verify2():

    a = []

    for _ in range(4):

        x = random.random()

        if x <= 0.4:

            a.append(random.choice(

                ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'L', 'K', 'J', 'H', 'G', 'F', 'D', 'S', 'A', 'Z',

                 'X', 'C', 'V', 'B', 'N', 'M']))

        elif x <= 0.8:

            a.append(random.choice(

                ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'l', 'k', 'j', 'h', 'g', 'f', 'd', 's', 'a', 'z',

                 'x', 'c', 'v', 'b', 'n', 'm']))

        else:

            a.append(random.choice(['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']))

    return str(''.join(a))

def code():

    global n

    a = verify2()

    verify = input(f'请输入验证码{a}:')

    if verify.lower() == a.lower():

        print('验证码正确')

    else:

        n += 1

        if n == 5:

            print('您已用光了验证机会')

        else:

            print('验证码错误,请重新输入')

            code()

code()

第1行: 引入random随机模块

第2行: 定义变量n=0,用于计算输入错误的次数

第3行: 创建函数verify2,用于随机生成验证码

第4行: 创建列表a,用于存放验证码的字符

第5行: for循环,用来循环五次

第6行: 定义变量x并为之赋值0~1的随机小数

第7-10行: 当x<=0.4时,即出现概率为4/10即0.4,随机选择大写字母中的一个

第11-14行: 当0.4<x<=0.8时,即出现概率为4/10即0.4,随机选择小写字母中的一个

第15-16行: 其他情况下即x>0.8时,即出现概率为2/10即0.2,随机选择一个数字

第17行: 将字符连在一起并返回给函数值

第18行: 创建函数code

第20行: 定义变量a并用verify2函数为之随机赋值一个验证码

第21行: 使用input函数提示用户输入验证码并赋值给verify

第22-23行: 判断输入的验证码小写是否与随机出现的验证码小写状态一样,若是一样,则打印验证码正确

第24-25行: 若是不一样,给全局变量n加一

第26-27行: 当n等于5的时候,代表以及输错了五次,打印您已用光了验证机会

第28-30行: 若还未输入五次错误,让用户重新输入验证码,并重新开始判断

第31行: 使用code函数开始运行代码


代码运行结果为:

attachments-2022-03-HdycS1b66239237e9fce1.png

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-Db126tiH62b3c64bf3ef6.jpeg

  • 发表于 2022-03-22 09:17
  • 阅读 ( 774 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章