某公司笔试题 - 密码验证合格程序(附python代码)

发布时间 2023-08-15 14:41:50作者: Alpha_To_Beta
# 密码要求
# 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