面向对象,构建密码类及内置函数完成解题。
import sys
class pswdscore(): #class password score's calculate
def __init__(self,pswd): #initial object,one parameter
self.pswd=pswd
lens=0;digs=0;alphs=0;syms=0;awards=0;score=0
def scorelen(self): #calculate length score
l_paswd=len(self.pswd)
if l_paswd<=4:self.lens=5
elif 4<l_paswd<=7:self.lens=10
else:self.lens=25
def scoredig(self): #calculate digit score
dignum=0
for s in self.pswd:
if s.isdigit():dignum+=1
if dignum==0:self.digs=0
elif dignum==1:self.digs=10
else:self.digs=20
def scorealph(self): #calculate alphabet score
alphaset=set()
for i in self.pswd:
if i.isalpha():
if i.lower()==i:alphaset.add('loweral')
else:alphaset.add('upperal')
if len(alphaset)==0:self.alphs=0
elif len(alphaset)==1:self.alphs=10
else:self.alphs=20
def scoresym(self): #calculate symbol score
symnum=0
for i in self.pswd:
if i.isalnum()==False:symnum+=1
if symnum==0:self.syms=0
elif symnum==1:self.syms=10
else:self.syms=25
def scoreaward(self): #calculate award score
self.scoredig();self.scorealph();self.scoresym()
if self.digs>0 and self.alphs>0 and self.syms==0:self.awards=2
elif self.digs>0 and self.alphs==10 and self.syms>0:self.awards=3
elif self.digs>0 and self.alphs==20 and self.syms>0:self.awards=5
else:self.awards=0
def calscore(self):
self.scorelen()
self.scoreaward()
self.score=self.lens+self.digs+self.alphs+self.syms+self.awards
if self.score>=90:return 'VERY_SECURE'
elif 80<=self.score<90:return 'SECURE'
elif 70<=self.score<80:return 'VERY_STRONG'
elif 60<=self.score<70:return 'STRONG'
elif 50<=self.score<60:return 'AVERAGE'
elif 25<=self.score<50:return 'WEAK'
else:return 'VERY_WEAK'
while 1:
try:
pswd=input().strip()
score=pswdscore(pswd)
print(score.calscore())
except:break
京公网安备 11010502036488号