題目描述
密碼要求:
1.長度超過8位
2.包括大小寫字母.數字.其它符號,以上四種至少三種
3.不能有長度大于2的包含公共元素的子串重復 (注:其他符號不含空格或換行)
資料范圍:輸入的字串長度滿足 1≤n≤100
輸入描述
一組字串
輸入描述
如果符合要求輸出:OK,否則輸出NG
代碼和解題思路
"""
先宣告一個用來判斷密碼的函式,通過呼叫函式來完成題目要求
"""
def check(s):
if len(s)<8:#判斷長度是否符合要求
return 0
a,b,c,d=0,0,0,0#a,b,c,d分別代表一種符號
for item in s:#遍歷字串,用ascall嗎來查看是否有某種型別符號
if ord('a')<=ord(item)<=ord('z'):
a=1
elif ord('A')<=ord(item)<=ord("Z"):
b=1
elif ord('0')<=ord(item)<=ord("9"):
c=1
else:
d=1
if a+b+c+d<3:#判斷是否符合字符種類至少有三種的要求
return 0
for i in range(len(s)-3):#將字串按分片的字串分開,一般情況下只能分成兩份,即一刀兩段,如果有三段,則證明有長度大于2的包含公共元素的子串重復
if len(s.split(s[i:i+3]))>=3:
return 0
return 1
while 1:
try:
print('OK' if check(input()) else 'NG');
except:
break
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/487445.html
標籤:Python
