一、题目
二、示例
三、代码
def Password(password):
if len(password) <= 8:
return(False)
up,low,num,sig = 0,0,0,0
for i in password:
if str(i).isupper():
up = 1
elif str(i).islower():
low = 1
elif str(i).isdigit():
num = 1
else:
sig = 1
if up + low + num + sig < 3:
return(False)
for i in range(len(password)-3):
if len(password.split(password[i:i+3])) >= 3:
return(False)
return(True)
while True:
try:
print('OK' if Password(input()) else 'NG')
except:
break
四、算法说明
建立判断密码合法性的子函数Password(password)
:先判断长度,如果不超过 8,返回False
;建立大小写字母、数字、符号的标志位,遍历密码,将当前字符对应的标志位置 1,如果所有的标志位满足up + low + num + sig < 3
,返回False
;在密码中选取连续的长度为 3 的字串,对密码进行分割,如果分割后列表长度大于 3,说明有长度大于 2 的含公共元素的子串重复,返回False
;如果以上都不满足,返回True
。主函数根据子函数的返回结果进行输出。
胡萝卜
2022年1月26日15:10:07
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |