题目:用户再输入密码字符串,编程实现检查密码密码是否符合。
下列标准:
第一,[a-z]之间至少有1个字母,不符合本条提示错误信息LowercaseAlphabetError;
第二,[0-9]之间至少有1个数字,不符合本条提示错误信息NumberError;
第三,[A-Z]之间至少有1个字母,不符合本条提示错误信息SupercaseAlphabetError;
第四,[$、#、&、@]中至少有1个字符,不符合本条提示输入错误信息SpecialCharacterError;
第五,密码长度范围6~12,不符合本条提示错误信息Length Error。
第六,不符合多条的要合并打印多个错误信息。
import string
d = {'a': [0, 'LowercaseAlphabetError'], '0': [0, 'NumberError'], 'A': [0, 'SupercaseAlphabetError'], '$': [0, 'SpecialCharacterError'], 'l': [0, 'Length Error'], }
s = input(">>>")
for i in s:
if i in string.ascii_lowercase:
d['a'][0] += 1
elif i in string.digits:
d['0'][0] += 1
elif i in string.ascii_uppercase:
d['A'][0] += 1
elif i in ['$', '#', '&', '@']:
d['$'][0] += 1
if 12 > len(s) > 5:
d['l'][0] += 1
flag = True
for k, v in d.items():
if v[0] == 0:
print(v[1])
flag = False
if flag:
print(f"输入密码合法,你的密码是:{s}")
我是这么写的,不晓得哪里错了
import re #这里用到了re库,也就是正则表达式做字符串的匹配
while 1:
p = input("请输入密码:")
if len(p)<6 or len(p)>12:
print("输入密码发生LengthError错误!请重新输入。")
if not re.search("[a-z]", p):
print("输入密码发生LowercaseAlphabetError错误!请重新输入。")
if not re.search("[0-9]", p):
print("输入密码发生NumberError错误!请重新输入。")
if not re.search("[A-Z]", p):
print("输入密码发生SupercaseAlphabetError错误!请重新输入。")
if not re.search("[$#&*@]", p):
print("输入密码发生SpecialCharacterError错误!请重新输入。")
elif re.search("[a-z]"and"[0-9]"and"[A-Z]"and"[$#&@]", p):
print("输入密码合法,你输入的密码字符串是:",p)
exit()