Python应用之验证码验证

简介: 用户登录网站经常需要输入验证码,验证码包含大小写字母和数字,随机出现。用户输入验证码时不区分大小写,只要各字符出现顺序正确即可通过验证。   请写一个程序完成验证码的匹配验证,随机生成四位数的验证码如Qs2X(生成数字概率为1/5,大写字母和小写字母概率各为2/5) 如果用户输入验证码正确,输出“验证码正确”,输入错误时输出“验证码错误,请重新输入”,再重新生成验证码让用户输入,输入五次错误时输出“您已用光了验证机会”。

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函数开始运行代码

代码运行结果为:

网络异常,图片无法展示
|

相关文章
|
2月前
|
存储 监控 安全
如何在Python Web开发中确保应用的安全性?
如何在Python Web开发中确保应用的安全性?
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2月前
|
人工智能 安全 Java
Java和Python在企业中的应用情况
Java和Python在企业中的应用情况
69 7
|
2月前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
78 3
|
2月前
|
机器学习/深度学习 算法 数据挖掘
线性回归模型的原理、实现及应用,特别是在 Python 中的实践
本文深入探讨了线性回归模型的原理、实现及应用,特别是在 Python 中的实践。线性回归假设因变量与自变量间存在线性关系,通过建立线性方程预测未知数据。文章介绍了模型的基本原理、实现步骤、Python 常用库(如 Scikit-learn 和 Statsmodels)、参数解释、优缺点及扩展应用,强调了其在数据分析中的重要性和局限性。
72 3
|
10天前
|
算法 数据处理 Python
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
Savitzky-Golay滤波器是一种基于局部多项式回归的数字滤波器,广泛应用于信号处理领域。它通过线性最小二乘法拟合低阶多项式到滑动窗口中的数据点,在降噪的同时保持信号的关键特征,如峰值和谷值。本文介绍了该滤波器的原理、实现及应用,展示了其在Python中的具体实现,并分析了不同参数对滤波效果的影响。适合需要保持信号特征的应用场景。
59 11
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
|
2月前
|
存储 人工智能 搜索推荐
Memoripy:支持 AI 应用上下文感知的记忆管理 Python 库
Memoripy 是一个 Python 库,用于管理 AI 应用中的上下文感知记忆,支持短期和长期存储,兼容 OpenAI 和 Ollama API。
103 6
Memoripy:支持 AI 应用上下文感知的记忆管理 Python 库
|
2月前
|
存储 前端开发 API
Python在移动应用开发中的应用日益广泛
Python在移动应用开发中的应用日益广泛
60 10
|
1月前
|
缓存 开发者 Python
深入探索Python中的装饰器:原理、应用与最佳实践####
本文作为技术性深度解析文章,旨在揭开Python装饰器背后的神秘面纱,通过剖析其工作原理、多样化的应用场景及实践中的最佳策略,为中高级Python开发者提供一份详尽的指南。不同于常规摘要的概括性介绍,本文摘要将直接以一段精炼的代码示例开篇,随后简要阐述文章的核心价值与读者预期收获,引领读者快速进入装饰器的世界。 ```python # 示例:一个简单的日志记录装饰器 def log_decorator(func): def wrapper(*args, **kwargs): print(f"Calling {func.__name__} with args: {a
43 2
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
探索未来编程:Python在人工智能领域的深度应用与前景###
本文将深入探讨Python语言在人工智能(AI)领域的广泛应用,从基础原理到前沿实践,揭示其如何成为推动AI技术创新的关键力量。通过分析Python的简洁性、灵活性以及丰富的库支持,展现其在机器学习、深度学习、自然语言处理等子领域的卓越贡献,并展望Python在未来AI发展中的核心地位与潜在变革。 ###