Skip to content

检测密码强度

难度:⭐

1. 题目描述

题目描述

输入密码,然后检测密码强度:

  1. 密码长度必须大于等于6位
  2. 包含数字强度 +1
  3. 包含小写字母强度 +1
  4. 包含大写字母强度 +1
  5. 包含特殊字符强度 +1
  6. 密码中不同字符长度每 6 位强度 +1

最后输出密码强度

2. 关键点

  • for 循环
  • if 判断

3. 代码实现

点击显示代码
python
def password_score(password):
    score = 0

    if len(password) < 6:
        return score

    score += 1
    has_sz = has_xx = has_dx = has_ts = False

    for c in password:
        if has_sz is False and c in '1234567890':
            score += 1
            has_sz = True
        if has_xx is False and c in 'abcdefghijklmnopqrstuvwxyz':
            score += 1
            has_xx = True
        if has_dx is False and c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
            score += 1
            has_dx = True
        if has_ts is False and c in '~!@#$%^&*()_+':
            score += 1
            has_ts = True

    score += len(set(password)) // 6
    return score


if __name__ == '__main__':
    password = input('请输入密码:')
    score = password_score(password)
    if score == 0:
        print('密码长度必须大于等于6位')
    elif score <= 2:
        print('密码强度弱')
    elif score <= 4:
        print('密码强度较强')
    elif score <= 6:
        print('密码强度强')
    else:
        print('密码强度超强')

4. 运行示例

请输入密码:sdfja2HDH%!d232
密码强度强

5. 进阶思考

  1. 使用 string 标准库来代替数字和小写字母
  2. 编写生成随机密码函数