实验:检测密码安全强度

一般可以作为密码字符主要有数字、小写字母、大写字母和标点符号(包括!"#$%&'()*+,-./:;<=>?@[]^_`{|}~) ,且至少包含6个字符。密码安全强度主要和字符串的复杂程度有关系,字符串中包含的字符种类越多,认为其安全强度越高。按照这个标准,可以把密码安全强度分为强、中高、中低、弱。其中强密码表示字符串中同时含有数字、小写字母、大写字母、标点符号这4类字符,而弱密码表示字符串中仅包含4类字符中的一种。

编写程序,输入一个字符串,输出该字符串作为密码时的安全强度。

要求: (1)使用表达式和运算符 (2)使用合适的数据结构

输入格式:
输入一个字符串作为密码,长度任意。

输出格式:
密码符合要求,输出安全强度,如strong,above middle,below middle,weak。

密码长度不符合要求,输出 at least 6 characters

密码组成不符合要求,输出 error

输入样例1:
在这里给出一组输入。例如:
a2d,abc
结尾无空行

输出样例1:
在这里给出相应的输出。例如:
above middle
结尾无空行

输入样例2:
在这里给出一组输入。例如:
a2d,C
结尾无空行

输出样例2:
在这里给出相应的输出。例如:at least 6 characters结尾无空行

输入样例3:
在这里给出一组输入。例如:a2d,C《》结尾无空行

输出样例3:
在这里给出相应的输出。例如:error


import re

def password_level(pw):
    if len(pw)<6:
        return '长度不符合要求'
    grp = 0
    if re.search('[a-z]',pw)!=None:
        grp += 1
    if re.search('[A-Z]',pw)!=None:
        grp += 1
    if re.search('[0-9]',pw)!=None:
        grp += 1
    if re.search('[!"#$%&\'\(\)*+,\./:;<=>?@\[\]^_`\{|\}~-]',pw)!=None:
        grp += 1
    return ['有未知字符','弱','较弱','较强','强'][grp]

a = ['aaaaaaaaa','automic','159753','1!2@3#','Af3Qw3'
     ,'!"#$%&\'\(\)*+,./:;<=>?@[]^_`{|}~-']

for i in a:
    print(i,password_level(i))

自行将汉字提示修改成你的提示信息