题解 | #密码验证合格程序#
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
def func(zifuchuan):
list1 = [0,0,0,0] #由于要判断四种情况,所以为了计算,就在列表中添加四个变量
if len(zifuchuan) < 8: #首先判断字符串长度
return False
for i in zifuchuan: #遍历字符串,看字符串中的字符的不同类型数量
if i.isupper():
list1[0] = 1
elif i.islower():
list1[1] = 1
elif i.isdigit():
list1[2] = 1
else:
list1[3] = 1
if sum(list1) < 3: #第二条要求,不同类型要大于等于3种
return False
for j in range(len(zifuchuan) - 2): #为了满足第三条不能有长度大于2的包含公共元素的子串重复,所以就先在字符串中截断了
chongfu = zifuchuan[j:j+3] #如果有三个重复了,那肯定包含第三条要求
if chongfu in zifuchuan[j+3:]: #判断第三条要求
return False
return True
while True:
try:
zifuchuan = input()
if func(zifuchuan):
print('OK')
else:
print('NG')
except:
break
list1 = [0,0,0,0] #由于要判断四种情况,所以为了计算,就在列表中添加四个变量
if len(zifuchuan) < 8: #首先判断字符串长度
return False
for i in zifuchuan: #遍历字符串,看字符串中的字符的不同类型数量
if i.isupper():
list1[0] = 1
elif i.islower():
list1[1] = 1
elif i.isdigit():
list1[2] = 1
else:
list1[3] = 1
if sum(list1) < 3: #第二条要求,不同类型要大于等于3种
return False
for j in range(len(zifuchuan) - 2): #为了满足第三条不能有长度大于2的包含公共元素的子串重复,所以就先在字符串中截断了
chongfu = zifuchuan[j:j+3] #如果有三个重复了,那肯定包含第三条要求
if chongfu in zifuchuan[j+3:]: #判断第三条要求
return False
return True
while True:
try:
zifuchuan = input()
if func(zifuchuan):
print('OK')
else:
print('NG')
except:
break