首页 > 编程语言 >python 简单密码校验

python 简单密码校验

时间:2022-08-20 23:11:07浏览次数:80  
标签:字符 python 校验 char 密码 pwd print check

# 判断字符串长度是否在8位以上
def check_len(pwd):
    if len(pwd) >= 8:
        return True
    else:
        return False


# 检查字符串是否是有大小写字母、数字、其他符号组成
def check(pwd):
    # 初始化一个列表变量
    check = [0, 0, 0, 0]
    for char in pwd:
        # 如果字符是小写,将check[0]的值为1
        if char.islower():
            check[0] = 1
        if char.isupper():
            check[1] = 1
        # 如果字符串是数字,将check[2]的值为1
        if char.isdigit():
            check[2] = 1
        # 如果字符是其他字符,也就是字母、数字或空白字符之外的符号,将check[3]的值置为1
        if not (char.isalpha() | char.isdigit | char.isspace()):
            check[3] = 1
        print(check)
        # 当列表中的4个元素项的值都是1,也就是各项和为4,
        # 说明字符串符合四个条件(由大小写字母、数字和其他字符号组成)
        # 当列表中4个元素项的和小于4 说明不合符条件
        if sum(check) < 4:
            return False
        else:
            return True
        # 检查字符串是否包含重复的,4位以上的子串
        # 这里只判断4位的子串是否由重复
        # 考虑到密码组成规则,当4位以上的字串由重复时,必定由4位的子串重复
        # 注意本函数当发现包含重复的4位以上的子串时返回的时False


def check_rep(pwd):
    n = len(pwd)
    # 通过循环依次取出4个字符组成的子串
    # 只要它后面的字符串包含有一个这样的字串,重复就为真
    for i in range(n - 4):
        # 取4个字符组成子串str1
        str1 = pwd[i:i + 4]
        # 取在str1后面剩余的所有字符作为str2
        str2 = pwd[i + 4::]
        # 如果str2 中存在一个str1,说明重复
        if str1 in str2:
            return False
        return True


# 主函数
if __name__ == '__main__':
    msg = '''
    请设置密码,密码要求符合以下条件
    1.密码长度不小于8位
    2.密码必须有大小写字母、数字、其他字符组成
    3.密码中不能重复包含长度超过4的字符
    '''
    print(msg)
    while True:
        # 提示输入密码
        pwd = input('请输入密码:')
        # 如果录入q,退出程序
        if pwd == 'q':
            print('退出程序.....')
        # 调用函数检查密码的位数
        vcheck1 = check_len(pwd)
        if not vcheck1:
            print('密码长度不够8位!请重新录入\n')
            continue
        # 调用函数检查密码是否有大小写字母、数字和其他符号组成
        vcheck2 = check(pwd)
        if not vcheck2:
            print('密码必须由大小写字母、数字和其他符号组成!请重新录入\n')
            continue
        # 调用函数检查密码是否有重复字串
        vcheck3 = check_rep(pwd)
        if not vcheck3:
            print('密码包含两个以上重新字串(4位以上的字串)!请查看并重新录入\n')
            continue
        print('密码正确')
        break

1.代码开头定义了check_len()、check()和check_rep()三个函数,check_len函数用于检测密码长度是否超过或等于8位。check()函数用于检测密码是否由大小写字母、数字和其他符号组成,该函数运用islower()、isupper()、isdigit()和isspace()等函数判断每个字符的性质,一旦有字符符合某个条件,就把该函数生成的一个列表变量check

2.主函数main调用三个函数对密码依次检测,如果密码的设定不能通过校验,则给出提示信息,让用户重新输入,直至密码符合要求,提示 密码输入正确 退出程序

标签:字符,python,校验,char,密码,pwd,print,check
From: https://www.cnblogs.com/vigo01/p/16609017.html

相关文章

  • Python文件管理
    目录Python文件管理一、os模块1、方法大纲2、常用方法二、glob模块1、方法大纲2、使用示例三、shutil模块1、方法大纲2、压缩包四、pathlib模块1、对比图2、路......
  • Navicat可视化软件、Navicat可视化软件、python操作MySQL、语法知识补充
    今日内容概要Navicat可视化软件多表查询练习题python操作MySQL知识补充今日内容详细Navicat可视化软件相关操作连接MySQL在官网上下载并安装好最新的Navicat软件......
  • win10 python mysqlclient 安装问题 已解决
    用习惯了Linux  忽然换到win10超级不习惯 今天下午就一个mysqlclient安装弄了好长时间 ,最后发现是得改名 真是想爆粗口。下面直接进入正题:下载地址  https:......
  • Python自学教程1-安装pycharm和执行环境
    Python虽然简单,但是很多没有接触过的学起来还是比较困难的。因此很多人会报班去学,我觉得不需要花那个钱,只要方向正确,加上核心知识点的提炼,自学一个月左右就能上手。我尝试......
  • 自动化选课(Python + selenium
    ​ 前几天听到朋友说自己选课事情,突发奇想想要搞这样一个东西,但是由于各种原因只做到以下的完成度,具体的情况也会在解释的最后留下。这个只适用于曲师大的教务系统,因为用的......
  • SQLAlchemy学习-10. validates()校验器
    前言向属性添加“验证”的一种快速方法是使用validates()装饰器。校验器属性验证器可以引发异常,停止改变属性值的过程,或者可以将给定值更改为不同的值。与所有属性扩......
  • 【Python基础教程】类的定义和使用
    哈喽兄弟们,今天咱们分享一下类的定义和使用。 在Python中,类表示具有相同属性和方法的对象的集合。在使用类时,需要先定义类,然后再创建类的实例,通过类的实例就可以访问......
  • 配置环境并使用测试--python
    一、使用anaconda搭建python环境condainfo--env 查看环境condaremove-nweb--all删除环境condacreate--namepythonpython=3.8创建名为python的虚拟环境......
  • 爱吃瓜?那就来用python采集每天热点,发送到自己的邮箱,绝不错过
    前言嗨喽,大家好呀~这里是爱看美女的茜茜呐本篇文章内容主要为如何用代码,把你想要的内容,以邮件的形式发送出去内容可以自己完善,还可以设置一个定时发送,或者开机启动自动......
  • Python小游戏——外星人入侵(保姆级教程)第一章 03 04
    系列文章目录第一章:武装飞船03:设置飞船图片04:创建Ship类——管理飞船行为的类一、设置飞船图片1.注意事项A.将图片设置为位图bmp格式最简单,因为pygame默认加载位图B......