ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 简单密码校验

2022-08-20 23:36:50  阅读:164  来源: 互联网

标签:字符 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
来源: https://www.cnblogs.com/vigo01/p/16609017.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有