python3实现密码复杂度验证,由长度,大小写字母特殊字符、重复子串来评出等级

规则:

用户密码复杂度验证 (封装成函数)
    长度超过8位(必须)                              +1分
    包括大、小写字母.数字.其它符号,以上四种至少三种   +1分
    不能有长度超过或等于3的子串重复                   +1分
    密码的评分等级,默认2分,以上条件满足一条加1分
    返回密码的评分等级,及要改进的点:
    如 return 3, ['长度小于8', '密码没有由3种以上字符组成']

#  将密码验证不同内容封装成函数,再进行调用

# 以下是完整代码

#  密码长度判断

def passwd_judge1(passwd:str, grade):
    if len(passwd) < 8:
        advice.append("你的密码长度小于8,请重试!")
    else:
        grade += 1
    return grade

# 数字,字母,特殊字符的判断

result = [0, 0, 0, 0]
def passwd_judge2(passwd:str):
    for i in passwd:
        if sum(result) >=3:
            break
        else:
            if i.isupper():
                result[0] = 1
            elif i.islower():
                result[1] = 1
            elif i.isdigit():
                result[2] = 1
            else:
                result[3] = 1
    return result

# 重复子串判断

def passwd_judge3():
    global grade1
    grade1 = 0
    for a in range(len(passwd)):
        if passwd.count(passwd[a:a + 3]) >=2:
            advice.append("你的密码有长度超过或等于3的子串重复!")
            break
        else:
            grade1 =1
    return grade1
passwd = input("请输入密码:")
grade = 2
advice = []
grade = passwd_judge1(passwd,grade)
grade1 = passwd_judge3()
if grade1 == 1:
    grade +=1
result1 = passwd_judge2(passwd)
if sum(result1) < 3:
    info = ["你的密码需要包括大、小写字母.数字.其它符号,以上四种至少三种"]
    print(grade, advice+info)
else:
    grade +=1
    print(grade, advice)

# 测试

请输入密码:12BUBUY
3 ['你的密码长度小于8,请重试!', '你的密码需要包括大、小写字母.数字.其它符号,以上四种至少三种']

猜你喜欢

转载自blog.csdn.net/wsy_miao/article/details/105667149