题解 | #密码强度等级#
密码强度等级
http://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
我一定是一个大冤种,查了各种信息,穷举了无数次才解出来,如果你看到了,请点个赞支持一下,谢谢
in_str = input()
1长度
if len(in_str) <= 4: len_score = 5 elif len(in_str) > 4 and len(in_str) < 8: len_score = 10 else: len_score = 25 #print(len_score)
2字母 # 穷举52个字母,我一定是疯了
str_str = in_str.lower() #转换成小写字母,可以省一半判断?全小写字母分过高,偷懒不成 # 字母判断错误,全是大写字母可以夹杂其他符号,也可以不止一个 # isupper(),islow()不受特殊符号影响真好 if (str_str.count('a') + str_str.count('b1') + str_str.count('c') + str_str.count('d') + str_str.count('e') + str_str.count('f') + str_str.count('g') + str_str.count('h') + str_str.count('i') + str_str.count('j')+str_str.count('k') + str_str.count('l') + str_str.count('m') + str_str.count('n') + str_str.count('o') + str_str.count('p') + str_str.count('q') + str_str.count('r') + str_str.count('s') + str_str.count('t')+ str_str.count('u') + str_str.count('v') + str_str.count('w') + str_str.count('x') + str_str.count('y') + str_str.count('z')) == 0: str_score = 0
elif (str_str.count('a') + str_str.count('b') + str_str.count('c') + str_str.count('d') + str_str.count('e') +
str_str.count('f') + str_str.count('g') + str_str.count('h') +
str_str.count('i') + str_str.count('j')+str_str.count('k') + str_str.count('l') + str_str.count('m') +
str_str.count('n') + str_str.count('o') +
str_str.count('p') + str_str.count('q') + str_str.count('r') + str_str.count('s') + str_str.count('t')+
str_str.count('u') + str_str.count('v') + str_str.count('w') +
str_str.count('x') + str_str.count('y') + str_str.count('z')) == 1:
elif in_str.islower() or in_str.isupper(): str_score = 10 else: str_score = 20 #print(str_score)
3数字
if (in_str.count('0') + in_str.count('1') + in_str.count('2') + in_str.count('3') + in_str.count('4') + in_str.count('5') + in_str.count('6') + in_str.count('7') + in_str.count('8') + in_str.count('9')) == 0: digit_score = 0 elif (in_str.count('0') + in_str.count('1') + in_str.count('2') + in_str.count('3') + in_str.count('4') + in_str.count('5') + in_str.count('6') + in_str.count('7') + in_str.count('8') + in_str.count('9')) == 1: digit_score = 10 else: digit_score = 20 #print(digit_score)
4符号
if (in_str.count('!') + in_str.count('"') + in_str.count('#') + in_str.count('') + in_str.count('%') + in_str.count('&') + in_str.count('\'') + in_str.count('(') + in_str.count(')') + in_str.count('*') + in_str.count('+') + in_str.count(',') + in_str.count('-') + in_str.count('.') + in_str.count('/') + in_str.count(':') + in_str.count(';') + in_str.count('<') + in_str.count('=') + in_str.count('>') + in_str.count('?') + in_str.count('@') + in_str.count('[') + in_str.count('\\') + in_str.count(']') + in_str.count('^') + in_str.count('^') + in_str.count('_') + in_str.count('`') + in_str.count('{') + in_str.count('|') + in_str.count('}') + in_str.count('~')) == 0: alnum_score = 0 elif (in_str.count('!') + in_str.count('"') + in_str.count('#') + in_str.count('') + in_str.count('%') + in_str.count('&') + in_str.count(''') + in_str.count('(') + in_str.count(')') + in_str.count('*') + in_str.count('+') + in_str.count(',') + in_str.count('-') + in_str.count('.') + in_str.count('/') + in_str.count(':') + in_str.count(';') + in_str.count('<') + in_str.count('=') + in_str.count('>') + in_str.count('?') + in_str.count('@') + in_str.count('[') + in_str.count('\') + in_str.count(']') + in_str.count('^') + in_str.count('^') + in_str.count('_') + in_str.count('`') + in_str.count('{') + in_str.count('|') + in_str.count('}') + in_str.count('~')) == 1: alnum_score = 10 else: alnum_score = 25 #print(alnum_score)
5奖励
if str_score >= 20 and digit_score >= 10 and alnum_score >= 10: award_score = 5 elif 0 < str_score < 20 and digit_score >= 10 and alnum_score >= 10: award_score = 3 else: award_score = 2
print(award_score)
score = len_score + str_score + digit_score + alnum_score + award_score out_str = '' if score >= 90: out_str = 'VERY_SECURE' elif score >= 80: out_str = 'SECURE' elif score >= 70: out_str = 'VERY_STRONG' elif score >= 60: out_str = 'STRONG' elif score >= 50: out_str = 'AVERAGE' elif score >= 25: out_str = 'WEAK' elif score >= 0: out_str = 'VERY_WEAK' else: pass
print(score)
print(out_str)