一般可以作为密码字符主要有数字、小写字母、大写字母和标点符号(包括!"#$%&'()*+,-./:;<=>?@[]^_`{|}~) ,且至少包含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))
自行将汉字提示修改成你的提示信息