Как при 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)
→ Ссылка