python - 验证字符串密码是否符合要求

运行环境:python2.7 

需求如下:

"""
检查哪个字符串用密码合适。

1.密码至少在8字以上20字以下
2.密码由英文字母,数字和特殊文字组成
3. 至少应包括两个数字
4.应包括一个以上的大写字母
5.特殊文字只能用( ___  ?  !)三个
6.以密码是否合适为结果返还。 此时不适合时,详细理由也一并输出,
- 不超过8个字或超过20个字:1
- 2个以下数字:2
- 没有大写字母:3
- 无特殊文字:4
- 其他不可接受的文字:5

7. 规则的优先顺序是:
- 字数检查
- 英文字母检查
- 数字检查
- 大写字母检查
- 特殊文字检查


def isValid(passwd) :
   ‘’’ input : password
return value : isValid – True or False reason – 1 ~ 5
   ‘’’
   pass  # 这部分完成

#main
password = input('Enter your password: ')
pass # 这部分完成


Enter your password: Aqwefrji52!
有效口令。可以使用。


Enter your password: qoiuwer?dA3
密码无效!请在密码中至少包含两个数字。


Enter your password: Qoieqwoh458%$
密码无效!包含无效字符。

Enter your password: A451asfㅁ니ㅏㅓㄻ
密码无效!包含无效字符。


Enter your password: a45alskfjlfas
密码无效!请在密码中至少包含一个字符。
"""

代码实现:

# -*- coding: utf-8 -*-


def isValid(passwd):
    shuZi_num = 0
    lower_num = 0
    upper_num = 0
    teShuZiFu_num = 0
    wuXiaoZiFu_num = 0

    # 字数检查
    if len(passwd) > 20 or len(passwd) < 8:
        return "密码无效:不超过8个字或超过20个字:1"
    # 包含字符数量统计
    for s in passwd:
        if s.isdigit():
            shuZi_num += 1
        elif s.islower():
            lower_num += 1
        elif s.isupper():
            upper_num += 1
        elif s == "_" or s == "?" or s == "!":
            teShuZiFu_num += 1
        else:
            wuXiaoZiFu_num += 1

    # 英文字母检查
    if lower_num <= 0 and upper_num <= 0:
        return "密码无效:未包含英文字母"
    # 数字检查
    if shuZi_num < 2:
        return "密码无效:数字少于两个:2"
    # 大写字母检查
    if upper_num < 1:
        return "密码无效:没有大写字母:3"
    # 特殊文字检查
    if wuXiaoZiFu_num > 0:
        return "密码无效:包含无效字符:5"
    if teShuZiFu_num <= 0:
        return "密码无效:未包含特殊文字:4"
    else:
        return "有效口令。可以使用。"


if __name__ == "__main__":
    # 接收控制台输入
    password = raw_input('Enter your password: ')
    print "password: ", password

    # 判断密码是否符合要求
    print isValid(password)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值