运行环境: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)