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

# 密码要求
# 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
posted @   Alpha_To_Beta  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示