题解 | #密码强度等级#
密码强度等级
http://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
while True:
try:
pwd=input()
pwd_len=len(pwd)
pwd_Upalp,pwd_Lowalp,pwd_num,pwd_symbol=0,0,0,0
lenscore,alpscore,numscore,symbolscore,otherscore,total_score=0,0,0,0,0,0
# 计算各种字符的个数
for i in pwd:
if i.isupper()==True:
pwd_Upalp+=1
if i.islower()==True:
pwd_Lowalp+=1
if i.isnumeric()==True:
pwd_num+=1
pwd_symbol=pwd_len-pwd_Upalp-pwd_Lowalp-pwd_num
# 计算长度分数
if pwd_len<=4:
lenscore=5
elif 5<=pwd_len<=7:
lenscore=10
else:
lenscore=25
# 计算字母分数
if pwd_Upalp==0 and pwd_Lowalp==0:
alpscore=0
if (pwd_Upalp>0 and pwd_Lowalp==0)&nbs***bsp;(pwd_Upalp==0 and pwd_Lowalp>0):
alpscore=10
if pwd_Upalp>0 and pwd_Lowalp>0:
alpscore=20
# 计算数字分数
if pwd_num==0:
numscore=0
if pwd_num==1:
numscore=10
if pwd_num>1:
numscore=20
# 计算符号分数
if pwd_symbol==0:
symbolscore=0
if pwd_symbol==1:
symbolscore=10
if pwd_symbol>1:
symbolscore=25
# 计算奖励分数
if alpscore>0 and numscore>0 and symbolscore==0:
otherscore=2
if alpscore==10 and numscore>0 and symbolscore>0:
otherscore=3
if alpscore==20 and numscore>0 and symbolscore>0:
otherscore=5
# 计算总分数
total_score=lenscore+alpscore+numscore+symbolscore+otherscore
# 用来调试
# print(pwd_Upalp,pwd_Lowalp,pwd_num,pwd_symbol)
# print(lenscore,alpscore,numscore,symbolscore,otherscore,total_score)
# 打印评分表
if total_score>=90:
print("VERY_SECURE")
elif total_score>=80:
print("SECURE")
elif total_score>=70:
print("VERY_STRONG")
elif total_score>=60:
print("STRONG")
elif total_score>=50:
print("AVERAGE")
elif total_score>=25:
print("WEAK")
else:
print("VERY_WEAK")
except:
break
