#python
#питон
Вопрос:
итак, у меня есть этот код
pa="" newpa="" use='' use=input('enter username:') pa=input('enter password') while True: if len(pa)==12: newpa=input('re-enter password:') else: print('the password used did not meet our system requirements, please enter a 12 digit password') if newpa==pa: print('you have successfully created a new account!')
всякий раз, когда я вставляю неверный pa, печать else продолжает зацикливаться. Как мне сделать так, чтобы всякий раз, когда я вхожу в pa, который не соответствует if, чтобы вернуться к newpa, если это поможет, это мой алгоритм, алгоритм того, к чему я пытаюсь стремиться
Комментарии:
1. Пожалуйста, исправьте отступ в вашем примере кода. Но, похоже, вам придется снова запросить ввод
pa
в цикл, еслиpa
он не соответствует требованиям. И, конечно, вам нужноbreak
из цикла, если все проверки прошли успешно.2. Поскольку никто еще не упоминал об этом: вам не нужно определять
pa
,newpa
иuse
как пустые строки в начале вашей программы.input
все равно перепишет эти записи. И, пожалуйста, подумайте об использовании более удобочитаемых имен. Вы ничего не выиграете, если сократите переменную для имени пользователяuse
и пароляpa
. Программа не будет работать быстрее, если вы сократите имена. Вы просто путаете себя и других читателей кода.
Ответ №1:
Первое, что нужно сделать, это поместить оператор ввода в цикл while. В данный момент ваш код возвращается в начало цикла while, не давая пользователю возможности повторно ввести свой пароль.
Вы также захотите переместить проверку для части повторного входа, чтобы она выполнялась только в том случае, если первый пароль был действительным. И сообщите пользователю, если их пароли не совпадают.
Наконец, вы захотите прервать цикл, когда будет введен и подтвержден действительный пароль. Используйте для этого перерыв.
Окончательный код будет выглядеть следующим образом:
pa="" newpa="" use='' use=input('enter username:') while True: pa=input('enter password') if len(pa)==12: newpa=input('re-enter password:') if newpa==pa: print('you have successfully created a new account!') break else: print('the passwords did not match!') else: print('the password used did not meet our system requirements, please enter a 12 digit password')
Надеюсь, это поможет и будет иметь смысл!
Комментарии:
1. Это очень полезно, однако я хочу дать пользователю бесконечное количество шансов повторно ввести пароль, если он не соответствует значению if
Ответ №2:
Ваш цикл будет выполняться непрерывно, пока вы не добавите break
инструкцию.
Вы можете попробовать что-то вроде приведенного ниже,
pa="" newpa="" use='' use=input('enter username:') while True: pa=input('enter password') if len(pa)==12: newpa=input('re-enter password:') if newpa==pa: print('you have successfully created a new account!') break else: print('the password used did not meet our system requirements, please enter a 12 digit password')
Ответ №3:
Когда вы входите в последний if
, вы хотите выйти из цикла. Итак, добавьте break
после печати.
if newpa==pa: print('you have successfully created a new account!') break
Ответ №4:
Используйте while True
цикл и выйдите из этого цикла, если пароль соответствует требованиям. Затем вы можете ввести пароль во второй раз и сравнить, совпадают ли оба ввода.
username = input('enter username:') while True: password = input('enter password') if len(password) == 12 and password.isdigit(): break print('the password used did not meet our system requirements, please enter a 12 digit password') password_check = input('re-enter password:') if password == password_check: print('you have successfully created a new account!')
Возможно, вам захочется включить это в дополнительный цикл, если пароли не совпадают.
Если вы используете функции, вы можете уменьшить сложность основной части.
def enter_password(message): while True: password = input(message) if len(password) == 12 and password.isdigit(): break print('the password used did not meet our system requirements, please enter a 12 digit password') return password def main(): username = input('enter username:') while True: password = enter_password('enter password') password_match = enter_password('re-enter password') if password == password_match: break print("The passwords don't match.") print('you have successfully created a new account!') if __name__ == '__main__': main()
Ответ №5:
Пожалуйста, используйте break, чтобы прервать оператор и продолжить выполнение оператора цикла в соответствии с вашими требованиями. Я надеюсь, что следующий код соответствует вашим требованиям. Спасибо и дайте мне знать, если я могу чем-нибудь помочь.
user=input('enter username:') while True: pa=input('enter password:') if len(pa)==12: newpa=input('re-enter password:') while newpa!=pa: newpa=input('re-enter password:') else: print('the password used did not meet our system requirements, please enter a 12 digit password') continue; if (newpa==pa): print('you have successfully created a new account!') break;