需要复杂条件下密码验证器的帮助
Need help for password validator with complex conditions
我刚开始 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")
string.find(s, sub[, start[, end]]
Return the lowest index in s where the substring sub is found such that sub is wholly contained in s[start:end]. Return -1 on failure. Defaults for start and end and interpretation of negative values is the same as for slices.
使其成为工作的错误工具。
您正在检查整个 majuscule
、minuscule
和 char
字符串是否在密码中并返回它们所在的索引。
您是什么d 想要做的是迭代字符并计算密码字符串中的匹配项。应该这样做
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")
输出:
λ 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): Whosebug
No Caps
Entrez un mot de passe (Doit contenir 10 caractères avec 2 majuscules, 2 minuscules et 2 caractères spéciaux): Whosebug
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!
我刚开始 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")
string.find(s, sub[, start[, end]]
Return the lowest index in s where the substring sub is found such that sub is wholly contained in s[start:end]. Return -1 on failure. Defaults for start and end and interpretation of negative values is the same as for slices.
使其成为工作的错误工具。
您正在检查整个 majuscule
、minuscule
和 char
字符串是否在密码中并返回它们所在的索引。
您是什么d 想要做的是迭代字符并计算密码字符串中的匹配项。应该这样做
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")
输出:
λ 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): Whosebug
No Caps
Entrez un mot de passe (Doit contenir 10 caractères avec 2 majuscules, 2 minuscules et 2 caractères spéciaux): Whosebug
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!