Подтверждение пароля в Python - PullRequest
0 голосов
/ 10 февраля 2020

Я немного изучаю Python и пытаюсь решить следующую проблему: Часть процедуры проверки приведена ниже. Когда пользователь вводит пароль, он проверяется на наличие от 8 до 15 символов, а затем запрашивается подтверждение пароля, вводя его снова. Требовать выполнения задачи (а) СОСТОЯНИЕ 1, СОСТОЯНИЕ 2 и задача (b) оператор IF ... ELSE. Запрограммируйте и протестируйте программу.

password1 = input("Please enter a new password, between 8 and 15 characters: ")

match = False

while CONDITION 1

  while CONDITION 2

    password1 = input ("Password must be between 8 and 15 characters - please re-enter: ")
  endwhile

  password2 = input ("Please verify password: ")

  if ....

    print 
  else

  endif

endwhile

Я выполнил задание (b), но в задании (a) возникла проблема с условием while l oop "while match:". Когда я оставляю переменную match = False и ввожу пароль с необходимым количеством символов, l oop сразу завершается и не проверяет оператор if .. else. Если я напишу match = True и с первой попытки введу неверное количество символов (с правильным номером оно снова завершит l oop), программа все равно будет проверяться, игнорируя количество символов. Если пароль был тем же (пример 111 и 111), он возвращается к l oop и снова запрашивает пароль с необходимым количеством символов. Затем, если я ввожу после правильного количества символов и проверки пароля то же самое, это завершает программу, как это должно быть. Я думаю, что-то с условием «совпадать» в то время как l oop не правильно, но не может понять, каким оно должно быть. Спасибо

password1 = input("Please enter a new password, between 8 and 15 characters: ")
match = True
while len(password1) < 8 or len(password1) > 15:
  password1 = input ("Password must be between 8 and 15 characters - please re-enter: ")
  while match:
    password2 = input ("Please verify password: ")
    if password1 == password2:
      print ("Password is valid")
      break
    else:
      print ("Password is invalid")

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Я думаю, как и вы, вы новичок в этом. Я считаю следующее неправильным в вашей интерпретации кода проблемы: условия 1 и 2 не на месте, если утверждение неверно l oop. Ваш матч также не переключен.

Проверьте это:

def password_verification():
    password1 = input('Please enter a new password, between 8 to 15 characters: ')
    match = False
    while match is False:
        while len(password1) < 8 or len(password1) > 15:
            password1 = input('Password must be between 8 to 15 characters - please re-enter password: ')
        password2 = input('Please verify password: ')
        if password1 == password2:
            print('Password is valid')
            match = True

        else:
            print('Password is invalid')

    return match

password_verification()
1 голос
/ 10 февраля 2020

Вы подходите только тогда, когда в первый раз было введено неверное количество символов. Что произойдет, если в первый раз пользователь введет от 8 до 15 символов? Первое время l oop не будет выполнено, и, следовательно, ничего не будет выполнено. Условие 1 (длина от 8 до 15) должно быть проверено вне l oop, а второе, в то время как l oop должно храниться отдельно.

pass1 = input('Enter a password : ')
while len(pass1) < 8 or len(pass1) > 15:
    print('Incorrect, try again')
    pass1 = input('Enter a password : ')
# Program reaches here only if pass1 is between 8 to 15 characters, otherwise first loop will be infinite
pass2 = input('Verify the password : ')
if pass1 == pass2:
    print('Valid')
else:
    while pass1 != pass2:
        pass2 = input('Invalid. Re-enter the correct password : ')

Приведенный выше код сначала берет password1, проверки если он находится в диапазоне 8-15 символов. Если это не так, первый, пока l oop продолжает выполняться. Когда задан верный ввод, он принимает password2 и проверяет равенство. Если он совпадает в первый раз, больше не нужно, пока l oop не требуется. Если он не совпадает, пока l oop продолжает работать, пока не будут предоставлены одинаковые пароли. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...