如何更改下面的代码,以便在密码强之前询问新密码?我知道你必须使用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循环,这就不那么容易做到(或者更确切地说,无法做到如此优雅(。
编辑-添加到评论中给出的建议:
一个";堆栈溢出";发生这种情况,你如何预防?
没有删除答案,因为我现在意识到这是一个不应该处理这个问题的例子,这可能会劝阻人们不要犯和我一样的错误。