面向对象,构建密码类及内置函数完成解题。

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