面向对象,构建密码类及内置函数完成解题。
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