题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
import re def length(a) ->int: if len(a)<=4: return 5 elif len(a)>=5 and len(a) <= 7: return 10 else: return 25 def word(a) ->int: word_count = len(re.findall('[A-Za-z]',a)) upper_word = len(re.findall('[A-Z]',a)) lower_word = len(re.findall('[a-z]',a)) if word_count==0: return 0 elif upper_word==0 and lower_word!=0 or upper_word!=0 and lower_word==0: return 10 elif upper_word!=0 and lower_word!=0: return 20 def nums(a) ->int: nums_count = len(re.findall('[0-9]',a)) if nums_count==0: return 0 elif nums_count==1: return 10 elif nums_count > 1: return 20 def symbol(a)-> int: symbol = len(re.findall(r"[!\"#$%&'()*+,-./:;<=>?@\[\\\]^_`{\|}~]",a)) if symbol==0: return 0 elif symbol==1: return 10 elif symbol>1: return 25 def reward(a): if nums(a)!=0 and word(a)!=0: if symbol(a)!=0: if word(a)==20: return 5 return 3 return 2 return 0 def output(result): if result >=90: return 'VERY_SECURE' if result >=80: return 'SECURE' if result >=70: return 'VERY_STRONG' if result >=60: return 'STRONG' if result >=50: return 'AVERAGE' if result >=25: return 'WEAK' if result >=0: return 'VERY_WEAK' if __name__=='__main__': a = input() result = length(a)+word(a)+nums(a)+symbol(a)+reward(a) # print(result) print(output(result))