Python_校验密码

题目描述:
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超过2的子串重复
说明:长度超过2的子串
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
示例1:
输入:
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出:
OK
NG
NG
OK

分析:
判断是否有长度超过2的子串重复,只需拿出长度为3的任意子串与剩下的比较

代码:

# 判断密码长度
def passwd_len(str):
    if len(str) > 8:
        return True
    else:
        return False
        
# 判断密码组成
def passwd_consist(str):
    digit,upper,lower,other = 0,0,0,0
    for i in str:
        if i.isdigit():
            digit = 1
        elif i.isupper():
            upper = 1
        elif i.islower():
            lower = 1
        else:
            other = 1

    sum = digit + upper + lower + other

    if sum >= 3:
        return True
    else:
        return False

# 判断密码重复
def passwd_rep(str):
    # 一次拿出一个长度为3的子串,则只需循环len(str)-3次即可遍历完字符串    
    for i in range(len(str)-3):
        # 如果相同子串的数量大于1,即子串重复,返回False
        if str.count(str[i:i+3]) > 1:
            return False
    return True

while True:
    s = input('请输入密码:')
    if s == 'q':
        break
    if passwd_len(s) and passwd_consist(s) and passwd_rep(s):
        print('OK')
    else:
        print('NG')

运行结果:
Python_校验密码_第1张图片

你可能感兴趣的:(Python_校验密码)