Python 自定义包和模块随机生成6位验证码(详解版)

news2024/11/18 4:52:03

一、新建一个包(两种方法)

方法一:先新建一个空目录命名为"小功能包",然后在新建的目录下新建一个空__init__.py(目的是声明当前目录是一个包)

方法二:直接在PyCharm用鼠标依次点击File --> New --> Python Package,然后命名为"小功能包"

二、新建一个模块

在PyCharm用鼠标依次点击File --> New --> Python File,然后命名为"验证码.py"

三、在自定义模块"验证码.py"编写代码,源码如下:

"""
    获取验证码模块
"""


# 获取验证码     ========================================================
class verify_code:
    __int_list = []     # 用于存储数字
    __str_list = []     # 用于存储字母
    __all_list = []     # 用于存储数字和字母

    # 列表添加元素    ---------------------------------------------------
    @classmethod
    def __list_append(cls):
        # 初始化清空
        cls.__int_list = []
        cls.__str_list = []
        cls.__all_list = []

        # 获取0-9数字
        for i in range(10):
            cls.__int_list.append(str(i))

        # 获取26个大小写字母
        for i in range(26):
            cls.__str_list.append(chr(ord('a')+i))
            cls.__str_list.append(chr(ord('A')+i))

        # 把数字和字母列表集合到一起
        cls.__all_list.extend(cls.__int_list)
        cls.__all_list.extend(cls.__str_list)

    # 获取列表元素    ---------------------------------------------------
    @classmethod
    def get_list_element(cls, list, int):
        import random
        code = ''
        for i in range(int):
            code += random.choice(list)

        return code

    # 纯获取数字验证码  --------------------------------------------------
    @classmethod
    def int_sequence(cls, int=6):
        cls.__list_append()     # 列表添加元素

        # 获取列表的元素
        return cls.get_list_element(cls.__int_list, int)

    # 获取纯字母验证码  --------------------------------------------------
    @classmethod
    def str_sequence(cls, int=6):
        cls.__list_append()     # 列表添加元素

        # 获取列表的元素
        return cls.get_list_element(cls.__str_list, int)

    # 获取数字和字母验证码    ---------------------------------------------
    @classmethod
    def verify_code(cls, int=6):
        cls.__list_append()     # 列表添加元素

        # 获取列表的元素
        return cls.get_list_element(cls.__all_list, int)


# 代码测试  =============================================================
if __name__ == '__main__':
    print(verify_code.int_sequence())
    print(verify_code.str_sequence())
    print(verify_code.verify_code())
else:
    print(f'导入"{__name__}"模块')

四、包里的模块如何应用,源码如下:

from 小功能包.验证码 import verify_code

print(verify_code.int_sequence())
print(verify_code.str_sequence())
print(verify_code.verify_code())

运行结果:

导入"小功能包.验证码"模块
105636
CEqAsj
uOHG5t

作者:周华

创作日期:2023/10/11

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1082273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity】【VR】如何让Distance Grab抓取物品时限制物品的Rotation

【背景】 遇到这样的场景,希望抓取Canvas时,Canvas不会沿Z轴旋转。 【问题】 发现Freeze Canvas的Rigid Body没有用。 【分析】 应该是RigidBody的限制仅在物理互动下生效,抓取可能不属于物理互动(比如碰撞),所以不生效。 【思路】 还是得写脚本挂载在Interacta…

LeetCode 69.x的平方

LeetCode 69.x的平方 思路&#xff1a; 二分查找。从1到x进行二分查找&#xff0c;每次判断mid的平方是否<x&#xff0c; 如果是&#xff0c;则更新ansmid&#xff0c;并缩小区间&#xff1b; 如果不是&#xff0c;则缩小区间&#xff1b; 最后则找到最接近的ans&#xff0…

数字IC/FPGA面试题目合集解析(一)

数字IC/FPGA面试题目合集解析&#xff08;一&#xff09; 题目概述题目1&#xff0c;计算题2&#xff0c;计算题3&#xff0c;选择题 答案与解析1&#xff0c;计算题2&#xff0c;计算题3&#xff0c;选择题 题目概述 1&#xff0c;计算题&#xff1a;计算该触发器等效的建立保…

AI项目十五:PP-Humanseg训练及onnxruntime部署

若该文为原创文章&#xff0c;转载请注明原文出处。 关于PP-Humanseg是在正点原子的3568开发板AI测试例子里看到的&#xff0c;目的也是想自己训练并部署&#xff0c;这里记录一下训练和在onnxruntime部署运行的全过程&#xff0c;会转成ONNX&#xff0c;至于部署到rk3568上&a…

Leetcode刷题详解——移动零

题目链接&#xff1a;移动零 题目描述&#xff1a; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出…

深度学习自学笔记十三:unet网络详解和环境配置

一、unet网络详解 UNet&#xff08;全名为 U-Net&#xff09;是一种深度学习架构&#xff0c;最初由Olaf Ronneberger、Philipp Fischer和Thomas Brox于2015年提出&#xff0c;用于图像分割任务。该网络的名称来源于其U形状的架构&#xff0c;该架构使得网络在编码和解码过程中…

Linux查看本机IP地址

Linux查看本机IP地址 命令 ipconfig可能会遇到的问题 Command ‘ifconfig’ not found, but can be installed with: Command ifconfig not found, but can be installed with:sudo apt install net-tools解决办法 安装net-tools再执行ipconfig 安装网络工具 sudo apt i…

Java-集合框架

文章目录 摘要CollectionCollection集合遍历Iterator迭代器增强for循环 排序 ListArrayListLinkedListVector SetHashSet Map小结 摘要 Java的集合框架提供了一组用于存储、管理和操作数据的类和接口。这个框架提供了各种数据结构&#xff0c;如列表、集合、队列和映射&#x…

sqoop 脚本密码管理

1&#xff1a;背景 生产上很多sqoop脚本的密码都是铭文&#xff0c;很不安全&#xff0c;找了一些帖子&#xff0c;自己尝试了下&#xff0c;记录下细节&#xff0c;使用的方式是将密码存在hdfs上然后在脚本里用别名来替代。 2&#xff1a;正文 第一步&#xff1a;创建密码对…

分类预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入分类预测

分类预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入分类预测 目录 分类预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输…

小迈物联网网关对接串口服务器[Modbus RTU]

很多工控现场&#xff0c;方案中会使用串口服务器采集Modbus RTU的设备&#xff0c;这种情况下一般会在PC机上装上串口服务器厂家的软件来进行数据采集。如果现场不需要PC机&#xff0c;而是通过网关将数据传输到软件平台&#xff0c;如何实现呢&#xff1f; 本文简要介绍小迈网…

记录用命令行将项目打包成war包

记录用命令行将项目打包成war包 找到项目的pom.xml 在当前路径下进入cmd 输入命令 mvn clean package 发现报错了 Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project MMS: Error assembling WAR: webxml attribute is req…

编程助手成为编程高手,帮您正则调试

官方下载地址&#xff1a;安果移动 视频演示地址&#xff1a;编程助手-正则调试与面试题&#xff0c;升职加薪不是梦_哔哩哔哩_bilibili 编程助手成为编程高手&#xff0c;帮您正则调试 软件介绍版本号 1.0.2更新日期 2023-10-11 找工作不敢谈薪资&#xff1f;总觉得公司欠我…

【JVM】初步认识Java虚拟机

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 JVM 一、初识JVM1.1 什么是JVM1.2 JVM的功能…

C之fopen/fclose/fread/fwrite/flseek

一、C中文件操作简介 c中的文件操作大致和linux的文件操作类似&#xff0c;但是毕竟是不同的API&#xff0c;所以会有些差异。部分差异会在下面的案例中体验 二、fopen open的参数有两个一个是文件名&#xff0c;一个是模式选择&#xff0c;不同open函数&#xff0c;open中的模…

python - 第15章 GUI的最终选择 Tkinter

文章目录 tk1tk2tk3 添加图片tk4 图片作背景 tk1 import tkinter as tkapptk.Tk() app.title("这是标题") # 显示标题theLabeltk.Label(app,text窗口程序!) # 显示文本,图片,图标 theLabel.pack() # 自动调节组件尺寸app.mainloop()tk2 import tkinter as tkclas…

各省份12.5m地形数据

手机整理了全国各省份12.5m的地形数据&#xff0c;ALOS的。 另外也有全国30m的地形数据&#xff0c;可以去我的博客目录找&#xff0c;以及各种模型数据均可在下面链接下载。 传送门&#xff1a;数据共享中心

017-第三代软件开发环境搭建

第三代软件开发环境搭建 文章目录 第三代软件开发环境搭建项目介绍实体机安装Ubuntu系统安装Qt安装GCC & G安装 OPen GL安装Git配置用户名和邮箱生成 SSH 安装VS Code安装Chrome安装搜狗输入法安装字体查看字体拷贝字体到目标机拷贝字体到目标机字体目录安装字体重启设备 安…

Unity基础课程之物理引擎2-碰撞检测案例-吃金币并加分

业务逻辑&#x1f4bc;&#xff1a; 这个脚本的主要功能是让主角在场景中吃到金币&#x1f4b0;&#xff0c;每吃到一个金币&#xff0c;主角的分数就会增加 10 分&#x1f389;&#xff0c;同时销毁金币。这样&#xff0c;玩家就可以通过吃金币来增加分数&#xff0c;挑战更高…

redis 哨兵 sentinel(二) 哨兵原理

主观下线 subjectively down SDown 客观下线 Oubjectively down ODown 多个sentinel要超过一半认为&#xff0c;master 主观下线了&#xff0c;才能认为主机是客观下线&#xff08;死掉&#xff0c;宕机了&#xff09; 通过Raft算法&#xff0c;选举一个兵王&#xff08;在所有…