簡單的驗證密碼是否合格
阿新 • • 發佈:2020-11-05
要求:
密碼要求:
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, 'View Codeupper': 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