1. 程式人生 > 實用技巧 >簡單的驗證密碼是否合格

簡單的驗證密碼是否合格

要求:

密碼要求:

1.長度超過8位

2.包括大小寫字母.數字.其它符號,以上四種至少三種

3.不能有相同長度大於2的子串重複

輸入描述:

一組或多組長度超過2的子符串。每組佔一行

輸出描述:

如果符合要求輸出:OK,否則輸出NG

示例:

輸入

021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000

輸出

OK
NG
NG
OK
 1 # 判斷密碼是否存在
 2 import re
 3 
 4 while True:
 5     count = 0
 6     # 用來存放每個型別是否出現
 7     count_dict = {'num': None, '
upper': None, 'lower': None, 'other': None} 8 # 用來驗證是否有子字串重複 9 is_dict = [] 10 flag = True 11 try: 12 s = input() 13 if len(s) <= 8: 14 print('NG') 15 else: 16 s_list = re.findall(r'(\d+|[a-z]+|[A-Z]+|\W+)', s) 17 s1_list = re.findall(r'
\d+|[a-zA-z]+|\W+', s) 18 # 判斷型別並儲存在字典中 19 for each in s_list: 20 if re.match(r'\d+', each): 21 count_dict['num'] = 1 22 elif re.match(r'[A-Z]+', each): 23 count_dict['upper'] = 1 24 elif re.match(r'
[a-z]+', each): 25 count_dict['lower'] = 1 26 elif re.match(r'\W+', each): 27 count_dict['other'] = 1 28 # 對字典中型別的數量進行計算 29 for value in count_dict.values(): 30 if value: 31 count += value 32 # 判斷是否有子字串重複,如果重複就讓flag=False 33 for each in s1_list: 34 if each in is_dict: 35 flag = False 36 else: 37 is_dict.append(each) 38 # 綜合判斷是否符合要求 39 if count >= 3 and flag: 40 print('OK') 41 else: 42 print('NG') 43 44 except Exception as e: 45 break
View Code