题解 | #密码强度等级#

https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361

"""
思路:将五个等分版块成绩汇总即可
技巧:将字符串中既不是字母也不是数字的判为其它符号
"""
s = input()
res = 0   # 总成绩初始赋0    
# 1.长度
if len(s) >= 8:
    res += 25
elif len(s) >= 5:
    res += 10
else:
    res += 5
 # 字母,数字,符号分类
la = [] # 是否是字母的列表
lu = [] # 是否是大写字母的列表
ll = [] # 是否是小写字母的列表
ld = [] # 是否数字的列表
lo = [] # 是否是其它号的列表 
for i in s:
    if i.isalpha():
        la.append(1)
    if i.isupper():
        lu.append(1)
    elif i.islower():
        ll.append(1)
    elif i.isdigit():
        ld.append(1)
    else:
        lo.append(1)    
# 2.字母
if sum(ld) == len(s):
    res += 0
elif sum(lu) == sum(la) or sum(ll) == sum(la):
    res += 10
else:
    res += 20
# 3.数字
if sum(ld) == 1:
    res += 10
elif sum(ld) > 1:
    res += 20
else:
    res += 0
# 4.符号(将既不是字母也不是数字的归为其它符号)
if len(lo) == 1:
    res += 10
elif len(lo) > 1:
    res += 25
else:
    res += 0
# 5.奖励
if (len(lu) > 0) and (len(ll) > 0) and (len(ld) > 0) and (len(lo) > 0):
    res += 5
elif (len(lu) + len(ll) > 0) and (len(ld) > 0) and (len(lo) > 0):
    res += 3
elif (len(lu) + len(ll) > 0) and (len(ld) > 0):
    res += 2
else:
    res += 0
# 输出结果
if res >= 90:
    print("VERY_SECURE")
elif res >= 80:
    print("SECURE")
elif res >= 70:
    print("VERY_STRONG")
elif res >= 60:
    print("STRONG")
elif res >= 50:
    print("AVERAGE")
elif res >= 25:
    print("WEAK")
else:
    print("VERY_WEAK")

全部评论

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
我即大橘:耐泡王
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务