简体   繁体   中英

if statement in while loop for password checker

I am building a program that will check a user's password whether it's lower than 6 characters or more than 10 characters and continue to check whether it's strong. If not more than 6 characters or less than characters, it will keep on asking the user to enter a password that is less than 10 characters and more than 6. Tried using a while loop but didn't work. Thanks in advance.

if password.isalpha():  # If python detects the input is all letters, it will-
    message = "password weak – contains only letters"  # Choose this message and present it on prompt from line 35
elif password.isnumeric():  # If python detects the input is not all alphabetical letters, it proceeds to this method-
    message = "password weak – contains only numbers"  # and chooses this message and presents it on prompt from line 35
else:
    message = "password strong"  # If the password input is a mixture of letters & numbers, it will print this message-

print(message) # and will be prompted to show for this line of code.

Try this logic. Flag = 1 means password is strong.

MIN_PASSWORD_LENGTH = 6
MAX_PASSWORD_LENGTH = 10
password = input("Please enter your password: ")  # User will input their password here, proceeding to the if structure
flag=0
while flag==0:
  if len(password) < MIN_PASSWORD_LENGTH:
    password = input("Please enter your password again:(Min Length=6) ")
    continue
  if len(password) > MAX_PASSWORD_LENGTH:
    password = input("Please enter your password again:(Max Length=10) ")
    continue
  else:
    flag=1
MIN_PASSWORD_LENGTH = 6
MAX_PASSWORD_LENGTH = 10
def password_func(ls):
    password = input("Please enter your password: ")
    if len(password) < MIN_PASSWORD_LENGTH or len(password) > MAX_PASSWORD_LENGTH:
        message = "Password should have more than 6 but less 10 characters"
        print(message)
        ls.append(message)
        return password_func(ls)
    elif password.isalpha():
        message = "password weak – contains only letters"
        print(message)
        ls.append(message)
        return password_func(ls)
    elif password.isnumeric():
        message = "password weak – contains only numbers"
        print(message)
        ls.append(message)
        return password_func(ls)
    else:
        return ls.append("strong")
ls = []
password_func(ls)
print("")
print("error messages")
print(*ls,sep='\n')

Or simply while Loop

MIN_PASSWORD_LENGTH = 6
MAX_PASSWORD_LENGTH = 10
messale_ls = []
message = ''
while True:
    password = input("Please enter your password: ")
    if len(password) < MIN_PASSWORD_LENGTH or len(password) > 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"
    messale_ls.append(message)
    print(message)
    if message == "password strong":
         break

Both give me the output is follows

Please enter your password: tester
password weak – contains only letters
Please enter your password: test
Password should have more than 6 but less 10 characters
Please enter your password: tester1
password strong

Note : Recursive function is only for learning purpose

Try this:

while len(str(password)) < MIN_PASSWORD_LENGTH and len(str(password)) > MAX_PASSWORD_LENGTH:
   if password.isalpha():  
      message = "password weak – contains only letters"  
   elif password.isnumeric(): 
      message = "password weak – contains only numbers"  
   else:
      message = "password strong" 
      break
   print(message)
MIN_PASSWORD_LENGTH = 6
MAX_PASSWORD_LENGTH = 10

while True:
  password = input("Please enter your password: ")
  if len(password) < MIN_PASSWORD_LENGTH or len(password) > MAX_PASSWORD_LENGTH:
    print("Password should have more than 6 but less 10 characters")
    continue
  elif password.isalpha():  
     print ("password weak – contains only letters")
     continue
   elif password.isnumeric(): 
     print ("password weak – contains only numbers")
     continue
   else:
      print("password strong")
      break
    

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM