而循环不会对齐并继续使用代码并继续循环

  • 本文关键字:继续 循环 代码 对齐 python
  • 更新时间 :
  • 英文 :


我试图在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)

最新更新