# 密码要求标签:return,验证,python,笔试,len,NG,密码,print,psw From: https://www.cnblogs.com/xiaocai84/p/17631240.html
# 1.长度超过8位; 2. 包括大小写字母,数字,其它符号,以上四种至少三种; 3.不能有长度大于2的包含公共元素的字串重复(其他符号不含空格或换行)
# 数据范围:输入的字符串长度满足1<=n<=100
# 检测输入密码
def checkpassword(psw):
if len(psw) <= 8 or len(psw) > 100:
return "NG"
# 包括至少三种
l = [0, 0, 0, 0]
# 遍历psw_str,有数字,有小写,有大写,有其它符号就记为1
for i in psw:
if i.isdigit():
l[0] = 1
elif i.islower():
l[1] = 1
elif i.isupper():
l[2] = 1
else:
l[3] = 1
# 数组l中和小于3,说明不满足3种以上
if sum(l) < 3:
return "NG"
# 不能有长度大于2的包含公共元素的字串重复
for j in range(len(psw)-3):
if psw.count(psw[j:j+3]) > 1:
return "NG"
return "OK"
print("请输入密码:")
while True:
try:
psw = input()
# 判断输入的密码中是否存在空格或换行符,python3中需要用\\n来表示\n
if len(psw.split(' ')) > 1 or len(psw.split('\\n')) > 1:
print('密码中不能包含空格或换行,请重新输入')
else:
res = checkpassword(psw)
print(res)
except ValueError:
if ValueError:
break