题解 | #密码强度等级#

密码强度等级

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)

全部评论
精神可嘉,哈哈
点赞 回复 分享
发布于 2022-06-26 22:13
精神可佳!但还是应该先思考用什么方法更合适。例如: 1.判断字母.isalpha() 2.判断大写字母.isupper() 3.判断小写字母.islower() 4.判断数字可以用.isdigit() 5.判断是否有字符:字符串总长 - (字母数 + 数字数) > 0,则存在字符
点赞 回复 分享
发布于 2022-06-10 10:04
字符串的方法了解一下isupper、islower、isnumeric
点赞 回复 分享
发布于 2022-05-08 22:35
看了你的,我觉得我写的还挺好的
点赞 回复 分享
发布于 2022-05-08 22:34

相关推荐

不愿透露姓名的神秘牛友
07-08 17:10
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务