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