Как выйти из цикла while? (2)
correct_password = 'QWERTY'
code_word = 'python'
attempt = 2
while True:
if input() == correct_password:
print('Введите кодовое слово')
while attempt > 0:
if input() == code_word:
print('Двойная аутентификация прошла успешно')
break
attempt -= 1
else:
print('Пароль неправильный. Повторите попытку')
Ответы (2 шт):
Автор решения: Стас
→ Ссылка
Я бы сделал что-то вроде такого:
correct_password = 'QWERTY'
code_word = 'python'
attempt = 2
authenticated = False
while not authenticated:
attempt = 2 # <-- в случае, если пользователь потратил две попытки,
# то при введении нового пароля нужно дать еще две попытки
if input() == correct_password:
print('Введите кодовое слово')
while attempt > 0:
if input() == code_word:
print('Двойная аутентификация прошла успешно')
authenticated = True # если код введен правильно, то устанавливаем флаг в истину,
# это позволит завершиться внешнему циклу while
break
attempt -= 1
else:
print("Ошибка аутентификации") # добавил сообщение о превышении числа попыток
else:
print('Пароль неправильный. Повторите попытку')
Автор решения: Максим Кочнев
→ Ссылка
По итогу получилось разобраться, добавил флаг, немного изменил код и нашел ответ
correct_password = 'QWERTY'
code_word = 'python'
authenticated = False
while not authenticated:
attempt = 2
if input() == correct_password:
print('Введите кодовое слово')
while attempt > 0:
attempt -= 1
if input() == code_word:
print('Двойная аутентификация прошла успешно')
authenticated = True
break
elif attempt == 0:
authenticated =True
else:
print('Пароль неправильный. Повторите попытку')