为了程序可读性,编写函数是不错的选择,五种评分标准分别编写程序::lens()、alps()、digs()、chas()、awas()。
# 密码长度得分
def lens(s):
    if len(s) <= 4:
        return 5
    elif 4 < len(s) < 8:
        return 10
    else:
        return 25

# 密码字母得分
def alps(s):
    for i in s:
        if i.isalpha():
            k = 1    # 判断密码是否包含字母
            break
        else:
            k = 0
    if k == 0:    # 不包含字母的情况
        return 0
    if k == 1:    # 包含字母的情况
        if s.islower()&nbs***bsp;s.isupper():    # 全为小写或者大写
            return 10
        else:
            return 20

# 密码数字得分,与字母得分类似
def digs(s):
    k = 0
    for i in s:
        if i.isdigit(): # 是数字就统计个数
            k += 1
    if k == 0:
        return 0
    elif k == 1:
        return 10
    else:
        return 20

# 密码符号得分
def chas(s):
    k = 0
    for i in s:     # 是符号就统计个数

        if 33 <= ord(i) <= 47&nbs***bsp;58 <= ord(i) <= 64&nbs***bsp;91 <= ord(i) <= 96&nbs***bsp;123 <= ord(i) <= 126: # 也可以直接用16进制进行比较判断
            k += 1
    if k == 0:
        return 0
    elif k == 1:
        return 10
    else:
        return 25

# 密码奖励得分
def awas(s):
    if s.isalnum():     # 包含字母和数字,但是不包含符号
        return 2
    elif alps(s) == 10 and digs(s) and chas(s):        # 包含字母(全是大写或者全是小写)、数字和符号
        return 3
    elif alps(s) == 20 and digs(s) and chas(s):        # 包含字母(大小写混合)、数字和符号
        return 5
    else:        # 其他情况没有加分,本代码必须有返回0这一步,否则在计算总得分时会报错
        return 0

if __name__ == '__main__':
    while True:
        try:
            s = input()
            sums = lens(s) + alps(s) + digs(s) + chas(s) + awas(s) # 统计总得分
            if sums >= 90:
                print('VERY_SECURE')
            elif sums >= 80:
                print('SECURE')
            elif sums >= 70:
                print('VERY_STRONG')
            elif sums >= 60:
                print('STRONG')
            elif sums >= 50:
                print('AVERAGE')
            elif sums >= 25:
                print('WEAK')
            else:
                print('VERY_WEAK')
        except:
            break