Python密码强度检查器

  • 本文关键字:密码 Python python
  • 更新时间 :
  • 英文 :


如何更改下面的代码,以便在密码强之前询问新密码?我知道你必须使用while循环,但我每次尝试都会把它弄得一团糟。

digits = False
upcase = False
lowcase = False
alnum = False
password = input("Enter a password between 6 and 12 characters: ")
while len(password) < 6 or len(password)>12:
if len(password)<6:
print("your password is too short")
elif len(password) > 12:
print("your password is too long")
password = input("Please enter a password between 6 and 12 characters.")
for i in range(0,len(password)):
if password[i].isupper():
upcase = True
if password[i].islower():
lowcase = True
if password[i].isalnum():
alnum = True
if password[i].isdigit():
digits = True
if digits and alnum and lowcase and upcase and digits:
print("Your password is strong")
elif (digits and alnum) or (digits and lowcase) or (digits and upcase) or (alnum and lowcase) or (alnum and upcase) or (lowcase and upcase):
print("Your password is medium strength")
else:
print("Your password is weak")

试试这个:

notStrong = True
while notStrong:
digits = False
upcase = False
lowcase = False
alnum = False
password = input("Enter a password between 6 and 12 characters: ")
while len(password) < 6 or len(password)>12:
if len(password)<6:
print("your password is too short")
elif len(password) > 12:
print("your password is too long")
password = input("Please enter a password between 6 and 12 characters.")
for i in range(0,len(password)):
if password[i].isupper():
upcase = True
if password[i].islower():
lowcase = True
if password[i].isalnum():
alnum = True
if password[i].isdigit():
digits = True
if digits and alnum and lowcase and upcase and digits:
print("Your password is strong")
notStrong = False
elif (digits and alnum) or (digits and lowcase) or (digits and upcase) or (alnum and lowcase) or (alnum and upcase) or (lowcase and upcase):
print("Your password is medium strength")
else:
print("Your password is weak")

您不必使用循环,只要在密码较弱或中等的情况下调用函数即可,如下所示:

def Password():

digits = False
upcase = False
lowcase = False
alnum = False
password = input("Enter a password between 6 and 12 characters: ")
while len(password) < 6 or len(password)>12:
if len(password)<6:
print("your password is too short")
elif len(password) > 12:
print("your password is too long")
password = input("Please enter a password between 6 and 12 characters.")
for i in range(0,len(password)):
if password[i].isupper():
upcase = True
if password[i].islower():
lowcase = True
if password[i].isalnum():
alnum = True
if password[i].isdigit():
digits = True
if digits and alnum and lowcase and upcase and digits:
print("Your password is strong")
elif (digits and alnum) or (digits and lowcase) or (digits and upcase) or (alnum and lowcase) or (alnum and upcase) or (lowcase and upcase):
print("Your password is medium strength")
Password()
else:
print("Your password is weak")
Password()

Password()

这是一种非常有用的技术,可以用来简化许多问题,而不需要循环。

此外,您还可以进行另一次检查,以便在未来根据需要调整所需的密码强度——如果您使用while循环,这就不那么容易做到(或者更确切地说,无法做到如此优雅(。

编辑-添加到评论中给出的建议:

一个";堆栈溢出";发生这种情况,你如何预防?

没有删除答案,因为我现在意识到这是一个不应该处理这个问题的例子,这可能会劝阻人们不要犯和我一样的错误。

最新更新