我试图在Python (PyCharm)中创建一个密码检查程序,具有给定的标准,但由于某些奇怪的原因,while循环将在else语句之后结束。标准和代码如下:
- 不能使用break
- 密码,password_length不能在while 中。
我已经尝试了多种解决方案,但代码似乎会导致同样的问题。代码一直围绕一条消息循环。
MIN_PASSWORD_LENGTH = 6 # Constants
MAX_PASSWORD_LENGTH = 10
message = ''
password = input("Please enter your password: ")
password_length = len(password)
while message != "password strong":
print(password_length)
if password_length < MIN_PASSWORD_LENGTH or password_length > MAX_PASSWORD_LENGTH:
message = "Password should have more than 6 but less 10 characters"
elif password.isalpha():
message = "password weak – contains only letters"
elif password.isnumeric():
message = "password weak – contains only numbers"
else:
message = "password strong"
print(message)
if message == "password strong":
exit()
使用用户消息作为内部指示器不是一个好主意。您应该使用单独的(布尔)变量。无限循环是由在while循环之外只询问一次用户密码提示引起的。
这里是调整后的代码,我相信应该对你有用:
MIN_PASSWORD_LENGTH = 6 # Constants
MAX_PASSWORD_LENGTH = 10
passwordIsStrong = False # password validity indicator,
while not passwordIsStrong:
password = input("Please enter your password: ") # (re)-ask for a password
password_length = len(password)
print(password_length)
if password_length < MIN_PASSWORD_LENGTH or password_length > MAX_PASSWORD_LENGTH:
message = "Password should have more than 6 but less 10 characters"
elif password.isalpha():
message = "password weak – contains only letters"
elif password.isnumeric():
message = "password weak – contains only numbers"
else:
message = "password strong"
passwordIsStrong = True # this will stop the loop
print(message)