如何实现(python初学者)

题目:用户再输入密码字符串,编程实现检查密码密码是否符合。
下列标准:
第一,[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()