Как при 3 неудачных попытках входа в систему прерывать работу программы?
base = {}
print ('Добро пожаловать в наше приложение ')
while True:
choice = input ('Введите 1, чтобы зарегистрироваться \nВведите 2, чтобы авторизоваться \nВведите 3, чтобы выйти из программы \n')
if choice == '1':
print('Процесс регистрации')
login =input('Введите логин: \n')
if login in base:
print ('Такой логин уже существует')
continue
password = input('Введите пароль: \n')
if password == '':
print ('Пароль не может быть пустой строкой!')
continue
password_again = input('Введите пароль повторно: \n')
if password == password_again:
base [login] = password
print ('Процесс регистрации завершен успешно')
elif password != password_again:
print ('Пароли не совпадают')
continue
else:
print ('Error!')
break
elif choice == '2' :
print('Процесс авторизации')
login = input('Введите логин: \n')
if login in base :
password = input('Введите пароль: \n')
if password == base[login]:
print('Вы успешно вошли в систему')
print('Хотите изменить пароль?')
izm_password = input('Введите 1 если да \nВведите 2 если нет \n')
if izm_password == '1':
new_password = input('Введите новый пароль \n')
new_password_2 = input('Введите пароль повторно: \n')
if new_password == new_password_2:
base.update({login:new_password })
print('Ваш пароль был изменен')
elif new_password != new_password_2:
print('Вы ввели не верный пароль')
break
if izm_password == '2':
break
else:
print('Пароль не верный')
continue
else:
print('Такой пользователь не зарегистрирован')
continue
else:
print('Выход из программы')
break
Ответы (1 шт):
Автор решения: Kers
→ Ссылка
В большом упрощении примерно так:
counter = 0
psw = "pass"
while True:
if counter > 2:
print("БЛОКИРОВКА!")
exit()
if psw == "password":
print("ВЕРНый пароль!")
elif psw != "password":
counter += 1
print("Ошибка: ", counter)
А лучше загнать авторизацию в отдельную функцию и вместо break использовать return True или return False (или любой другое значение дающее программе понять что делать дальше). При 3 ошибке можно добавить таймаут, а не просто выкидывать из программы. И тд вариантов доработки может быть много.
def autorizator():
counter = 0
while True:
psw = input("Введите пароль: ")
if counter > 2:
print("БЛОКИРОВКА!")
return False
if psw == "password":
print("Верный пароль!")
return True
elif psw != "password":
counter += 1
print("Ошибка: ", counter)
auth = autorizator()
print("Авторизация: ", auth)