Python 需要复杂条件下密码验证程序的帮助吗

Python 需要复杂条件下密码验证程序的帮助吗,python,passwords,Python,Passwords,我刚刚开始使用python,我正在尝试为密码构建一个简单的python验证。我希望密码包含2个大写字母、2个小写字母和2个特殊字符。密码的最小长度必须为10。这是我到目前为止所拥有的。代码没有给我任何错误,但我不能得到一个好的结果。非常感谢你的帮助,这样我才能理解我在这里做错了什么 def motdepasse(motdepasse): majuscule = 'ABCDEFGHIJKLMNOPQRSTUVXYZ' minuscule = 'abcdefghijklmnopqrstuvxyz'

我刚刚开始使用python,我正在尝试为密码构建一个简单的python验证。我希望密码包含2个大写字母、2个小写字母和2个特殊字符。密码的最小长度必须为10。这是我到目前为止所拥有的。代码没有给我任何错误,但我不能得到一个好的结果。非常感谢你的帮助,这样我才能理解我在这里做错了什么

def motdepasse(motdepasse):
majuscule = 'ABCDEFGHIJKLMNOPQRSTUVXYZ'
minuscule = 'abcdefghijklmnopqrstuvxyz'
char = '[@_!#$%^&*()<>?/\|}{~:]'

while True:
    motdepasse = input("Entrez un mot de passe (Doit contenir 10 caractères avec 2 majuscules, 2 minuscules et 2 caractères spéciaux): ")
    valid = 0

    if len(motdepasse) < 10:
        print("Entrez un mot de passe valide!")

        continue

    elif not (motdepasse.find(majuscule)) >= 2  :
        print("Entrez un mot de passe valide!")

        continue

    elif not (motdepasse.find(minuscule)) >= 2:
        print("Entrez un mot de passe valide!")

        continue

    elif not (motdepasse.find(char)) >= 2 :
        print("Entrez un mot de passe valide!")

        continue

    else:
        valid = True
        break
if valid == 0:
    print("Mot de passe valide")
def motdepasse(motdepasse):
majuscule='ABCDEFGHIJKLMNOPQRSTUVXYZ'
极小值='abcdefghijklmnopqrstuvxyz'
char='[@!\$%^&*()?/\\\\\}{~:]'
尽管如此:
motdepasse=输入(“不通过的入口(10克拉,2个大杯,2个小杯,2个小杯):”)
有效=0
如果len(motdepasse)<10:
打印(“请不要通过有效期!”)
持续
elif not(motdepasse.find(majuscule))>=2:
打印(“请不要通过有效期!”)
持续
elif not(motdepasse.find(minimacule))>=2:
打印(“请不要通过有效期!”)
持续
elif not(motdepasse.find(char))>=2:
打印(“请不要通过有效期!”)
持续
其他:
有效=真
打破
如果有效==0:
打印(“通行证有效期”)
根据

字符串。查找(s,sub[,start[,end]]


返回在s中找到子字符串sub的最低索引,使sub完全包含在s[start:end]中。失败时返回-1。start和end的默认值以及负值的解释与切片的默认值相同


让它成为工作的错误工具

您正在检查整个
majuscule
minumile
char
字符串是否在密码中,并返回它们所在的索引。
相反,您要做的是迭代字符并计算密码字符串中的匹配项。类似的操作应该可以做到

majuscule = 'ABCDEFGHIJKLMNOPQRSTUVXYZ'
minuscule = 'abcdefghijklmnopqrstuvxyz'
char = '[@_!#$%^&*()<>?/\|}{~:]'

while True:
    motdepasse = input("Entrez un mot de passe (Doit contenir 10 caractères avec 2 majuscules, 2 minuscules et 2 caractères spéciaux): ")
    valid = 0

    if len(motdepasse) < 10:
        print("Invalid Length")
        continue

    elif not len([x for x in motdepasse if x in majuscule]) >= 2:
        print("No Caps")
        continue

    elif not len([x for x in motdepasse if x in minuscule]) >= 2:
        print("Invalid lowercase")
        continue

    elif not len([x for x in motdepasse if x in char]) >= 2 :
        print("Invalid specials")
        continue

    else:
        valid = True
        break
if valid == 0:
    print("Mot de passe valide")

请包括您期望的结果和您得到的结果。感谢您的回复并向我解释。我知道我做错了什么,但我仍然无法实现密码正常工作的条件。我尝试了您的代码并对其进行了一些调整,但仍然无法使其正常工作。您的代码返回了fe第15行出现错误。我的tweeks让它工作了,但没有给我带来好的回报。输入正确的密码仍然要求我输入正确数量的大小写和特殊字符。代码在我这边运行正常。您遇到了什么错误?代码没有正确读取我的一个变量。我重新键入了代码,确保一切正常一切正常,工作正常。再次感谢您的帮助和解释。
λ python run.py
Entrez un mot de passe (Doit contenir 10 caractères avec 2 majuscules, 2 minuscules et 2 caractères spéciaux): Stack
Invalid Length
Entrez un mot de passe (Doit contenir 10 caractères avec 2 majuscules, 2 minuscules et 2 caractères spéciaux): stackoverflow
No Caps
Entrez un mot de passe (Doit contenir 10 caractères avec 2 majuscules, 2 minuscules et 2 caractères spéciaux): StackOverflow
Invalid specials
Entrez un mot de passe (Doit contenir 10 caractères avec 2 majuscules, 2 minuscules et 2 caractères spéciaux): Stack@Overflow!