题目:用户再输入密码字符串,编程实现检查密码密码是否符合。
下列标准:
第一,[a-z]之间至少有1个字母,不符合本条提示错误信息LowercaseAlphabetError;
第二,[0-9]之间至少有1个数字,不符合本条提示错误信息NumberError;
第三,[A-Z]之间至少有1个字母,不符合本条提示错误信息SupercaseAlphabetError;
第四,[$、#、&、@]中至少有1个字符,不符合本条提示输入错误信息SpecialCharacterError;
第五,密码长度范围6~12,不符合本条提示错误信息Length Error。
第六,不符合多条的要合并打印多个错误信息。
结果:
请输入密码: Ab*th
输入密码发生NumberError、LengthError 错误!请重新输入。
请输入密码: bru1G99
输入密码发生SpecialCharacterError错误!请重新输入。
请输入密码: th1Rc#88
输入密码合法,你输入的密码字符串是th1Rc#88。
def ValidPassword(s):
res = []
err = 'LowercaseAlphabetError','NumberError','SupercaseAlphabetError',
'SpecialCharacterError','LengthError'
p = []
p.append([chr(ord('a')+i) for i in range(26)])
p.append([chr(ord('0')+i) for i in range(10)])
p.append([chr(ord('A')+i) for i in range(26)])
p.append(['$','#','&','@'])
for i in range(4):
if sum([s.count(i) for i in p[i]])<1:
res.append(err[i])
if not 6<=len(s)<=12:
res.append(err[-1])
if res:
return f'输入密码发生{"、".join(res)}错误!请重新输入。'
else:
return f'输入密码合法,你输入的密码字符串是{s}。'
print(ValidPassword('Ab*th'))
print(ValidPassword('bru1G99'))
print(ValidPassword('th1Rc#88'))
输入密码发生NumberError、SpecialCharacterError、Length Error错误!请重新输入。
输入密码发生SpecialCharacterError错误!请重新输入。
输入密码合法,你输入的密码字符串是th1Rc#88。
你的第一个密码例子中的星号也不在[$、#、&、@]之列,所以比原题目答案多一个SpecialCharacterError