• Как завершить программу при получение отрицательного ответа?

    @GeneD88
    QA
    n = input("Input login: ")
    for i in range(int(len(x))):
        if x[i] == n:
            print("login is busy")
            log = input("input new login: ")
            pas = input("input new password: ")
            pas2 = input("repeat new passwort again: ")
            if pas == pas2:
                print("registrated new user")
                l = open("database.txt", "a")
                l.write(f"login : {log}, password : {pas},\n")
                l.close()
        else:
            pas = input("input new password: ")
            pas2 = input("repeat new passwort again: ")
            if pas == pas2:
                print("registrated new user")
                l = open("database.txt", "a")
                l.write(f"login : {log}, password : {pas},\n")
                l.close()
                break


    У вас скрипт идет в else - здесь он не знает переменную log, т.к. она не задана в этом блоке. Вынести переменную log за пределы if\else.
    Ответ написан
    Комментировать
  • Как завершить программу при получение отрицательного ответа?

    @Hitreno
    UPD: Табуляция появилась, проблема в if/else - если срабатывает if, то не срабатывает else, логично. Возможно и обратное - if не сработал и сработал else, но и if и else вместе сработать не могут. В этом и проблема - переменная log назначается в if, тогда как используется в else, поэтому если if не срабатывает переменная просто не создаётся. Попробуйте вынести объявление переменных, используемых в else, из конструкции if/else

    1. Вы не сделали табуляцию кода в вопросе, без чего не понять, где у вас заканчивается if, else и прочее.

    2. Если вы посмотрите на вывод терминала, который вы привели в конце, то там чёрным по белому написано - name 'log' is not defined (переменной с именем log не существует). Из-за проблем с табуляцией точную проблему назвать не могу.

    P.S. Использование для базы данных txt файл является очень странным решением. В питоне предустановлена библиотека sqlite3, позволяющая делать все работы с данными в вашем скрипте намного проще и корректнее. Вы же используете для записи данных деревянный забор и тупой гвоздь вместо предназначенной для этого бумаги.
    Ответ написан
    Комментировать
  • Работа с файлами, если есть такой логин, поросить ввести другую. Как разобраться с ошибкой?

    @o5a
    Потому что файл открыли в режиме 'w' - это только запись. Для чтения надо открывать в режиме 'r'.

    Еще есть совместные режимы 'r+', 'w+', но для данного случая проще отдельно открывать на чтение, пройтись по всему файлу, и если не встретился логин, открыть на добавление (режим 'a') и добавить новую запись.
    Ответ написан
    Комментировать