• Почему при запуске голосового ассистента он завершает свою работу?

    Vindicar
    @Vindicar
    Alwex0920, не стыдно не знать - стыдно не учиться. Дерзай. =)
    Написано
  • Как исправить баг socket подключение к двум и более клиентам паралельно через Thread?

    Vindicar
    @Vindicar
    VizerViper, а в чём с этим проблема? accept() ожидает подключения клиента, и возвращает объект-сокет, ассоциированный с этим клиентом. На этом роль accept() заканчивается. Как ты дальше работаешь с этим сокетом - уже твоё дело. Хоть параллельно, хоть последовательно, хоть асинхронно.
    Написано
  • Почему при запуске голосового ассистента он завершает свою работу?

    Vindicar
    @Vindicar
    Alwex0920, у тебя очень кривая работа с f.
    Во-первых, read() читает ВЕСЬ файл до конца. А значит, если ты записал туда 0 и поставил после него перевод строки, то результат чтения будет "0\n" и "0\r\n", а не "0". Даже если перевод строки не поставлен, будет очень легко ошибиться и поставить его впоследствии. Это можно починить, если сделать strip() прочитанной строке.

    Во-вторых, когда ты делаешь read() или write(), чтение/запись происходит по текущей позиции в файле. После чтения/записи эта позиция сдвигается. Иными словами, у вызова f.read() без параметров есть побочный эффект - текущая позиция чтения/записи файла окажется в конце файла. Как следствие, второй вызов f.read(), который ты делаешь для сравнения с "0", гарантированно прочитает пустую строку. Просто хочется спросить: тебе по пальцу отрубают за использование лишних переменных, или как? Что мешало сохранить результат вызова f.read() в переменную, и дальше работать с ней? Тогда у тебя был бы только один вызов read().

    В-третьих, после вызова read() у тебя позиция чтения/записи будет в конце файла. Так что вызов f.write("1") допишет единицу в конец файла, вместо того, чтобы записать её поверх нуля. А потому у тебя в файле будет записано "01", и твой код снова не сработает

    Ну и в-четвёртых, да - ты ничего не делаешь, если содержимое файла не соответствует твоим ожиданием.
    А потом удивляешься, что программа ничего не делает.
    С учётом этого, ты мог бы организовать код примерно так (ПРИМЕРНО! не списывай его вслепую, а постарайся понять):
    with open("registr.txt", "w+") as f:
        content = f.read()
    content = content.strip()
    if content == "0":
        ...
    elif content == "1":  # почитай, что делает elif
        ...
    else:  # в файле не 0 и не 1
        print('Неожиданное содержимое файла registr.txt!', repr(content))


    А вообще я бы посоветовал освоить модуль configparser или json, и читать/записывать конфиг с их помощью. Не понадобится чёртова прорва текстовых файлов, да и в целом многие вещи они берут на себя.
    Написано
  • Почему row[0] обращается к None объекту?

    Vindicar
    @Vindicar
    Reaper_sds, при таком подходе
    - очень легко словить ошибку или уязвимость в другом месте
    - выполняется два запроса, где хватило бы одного
    - становится тяжело прочитать код
    Лучше сразу приучиться делать как правильно.
    Написано
  • Почему row[0] обращается к None объекту?

    Vindicar
    @Vindicar
    c.execute(f"UPDATE users SET cash = {c.execute(f'SELECT cash FROM users WHERE id = {inter.author.id}') - row[1]} WHERE id = {inter.author.id}")


    Пожалуйста, не надо так делать. Вам что, по пальцу отрезают за каждую промежуточную переменную?
    И не надо формировать запросы через f-строки, для этого есть подстановка параметров в запрос. Будет аккуратнее и безопаснее.
    Написано
  • Почему при запуске голосового ассистента он завершает свою работу?

    Vindicar
    @Vindicar
    Alwex0920, покажи исправленный код и текст ошибки, которую код выводит. Будем разбираться.
    Написано
  • Как получить координаты предмета на скриншоте?

    Vindicar
    @Vindicar
    Artem Mikhniuk, я выше написал - используй пакет pywinauto, например.
    Разберсть, как им пользоваться, проверь, реагирует ли вообще игра на действия этого пакета, потом дополни свой код, чтобы он не обводил объекты прямоугольниками, а кликал по ним.
    Написано
  • Как получить координаты предмета на скриншоте?

    Vindicar
    @Vindicar
    Задание, а не вопрос.
    В чём конкретно проблема? Как искал (если вообще искал)?
    Потому что даже по запросу "питон навести курсор мыши" быстро выходишь на пакеты pyautogui и pywinauto.
    Написано
  • Безопасная система пруфов при открытии лут-боксов?

    Vindicar
    @Vindicar
    Возможен-то возможен, но будет ли толк? Просто юзеры будут верить, что им заранее генерят неправильные лутбоксы с одной фигнёй.
    Написано
  • Почему у задачи такое решение?

    Vindicar
    @Vindicar
    Naims, у метода slice() два параметра, но второй может быть не указан.
    Первый - индекс начала.
    Второй - индекс конца (если указан). Если не указан, то до конца последовательности.
    Отсюда вывод:
    .slice(-1) означает "возьми элементы, начиная с последнего (-1) и до конца", т.е. "возьми последний элемент".
    .slice(-2, -1) означает "возьми элементы, начиная с предпоследнего (-2) и до последнего (-1) НЕ включительно", т.е. "возьми предпоследний элемент".

    И да, в твоём коде условие else if(word_11.slice(-1) != "ь") лишнее совершенно. Если ты попал в else, значит, условие в первом if не выполнилось, а значит, слово не заканчивается на мягкий знак.
    Написано
  • Работа с txt в python. Как работать с редактированием строк?

    Vindicar
    @Vindicar
    Ну в данном случае выглядит норм - файл изменять-то не требуется, только извлечь символы из каждой строки. И хотя питон тут избыточен, кому что удобнее...
    Написано
  • Как это работает?

    Vindicar
    @Vindicar
    Оформляй код, как того требуют правила. Кнопка </> в помощь.
    Ну и правильно выше написали, в чём конкретно вопрос?
    Как работает цикл? Как работает умножение? Как работает вывод в консоль?
    Написано
  • Как убрать пробел между символами?

    Vindicar
    @Vindicar
    Gojo_Satoru, sep вставляется между перечисленными значениями.
    На пальцах, print(a, b, c, sep=x, end=y) даст тот же эффект, что и
    line = sep.join(str(_) for _ in [a, b, c])
    line += end
    print(line)
    Написано
  • Как сделать правильный цикл назначения одной сущности другой?

    Vindicar
    @Vindicar
    sergey_frolkin, стоп, что? Что значит "для каждой книги создаются все юзеры"? У тебя в корне структуры юзеры лежат, а не книги.
    Приводи пример исходных данных, и результирующего файла, чтобы можно было хоть код запустить.
    Написано
  • Как сделать правильный цикл назначения одной сущности другой?

    Vindicar
    @Vindicar
    В чём именно проблема-то? Какие симптомы?
    Написано
  • Почему auto-py-to-exe долго собирает приложение и что означает TRACE?

    Vindicar
    @Vindicar
    DoILookLikeASubscriber, т.е. это вывод логов так тормозил всё?! Нихрена себе...
    Написано
  • Изменение ProgressBar по итерациям в функции?

    Vindicar
    @Vindicar
    apkaevi, ну тут я не помощник - я не работал с QT и не знаю, являются ли потокобезопасными обращения к элементами управления. Вроде в большинстве GUI-фреймворков они НЕ потокобезопасные, а значит, тебе нужен способ вызвать код в контексте главного потока. Вроде что-то упоминается, что если ты соединяешь сигнал одного потока со слотом в другом потоке, то код выполняется в контексте потока-владельца слота.
    Написано
  • Как сделать функцию в которой в переменной будет много функций?

    Vindicar
    @Vindicar
    thesirvlad, нет, это работает не так, как ты думаешь.
    print(cherepashka(myfunc()))
    У тебя тут происходит следующее:
    1. Вызывается myfunc() и возвращает результат (для твоего кода - результатом будет None)
    2. Вызывается cherepashka(), а результат из п.1 передаётся в неё параметром mn. В коде функции у тебя есть цикл
    for i in range(4):
        mn

    Этот цикл не делает ровным счётом ничего, так как в mn лежит None, возвращённый myfunc().
    3. ceherpashka() вызывает exit(), и работа скрипта прекращается - до выполнения print() дело уже не доходит. Так что вызов print() не нужен.

    Если ты хочешь передать функцию в функцию, это можно - но это нужно делать вот так:
    cherepashka(myfunc)  # обрати внимание - нет скобок! Мы не вызываем myfunc(), а передаём её

    Тогда в коде cherepashka() будет следующее:
    for i in range(4):
        mn()  # а тут мы вызываем переданную функцию 4 раза подряд
    Написано
  • Как вернуть старый интерфейс Google Chrome?

    Vindicar
    @Vindicar
    Никогда, увы, не прокатит. Рано или поздно наткнёшься на сайт, который не просто проверяет User Agent, а требует новые фичи в браузере.
    Написано
  • Какова верная реализация множественного выбора в SQLite через LIKE и REGEXP (Python)?

    Vindicar
    @Vindicar
    Gorgio Govani, Во-первых, "у меня не работает" - это не ответ. Какое сообщение об ошибке? Если нет сообщения, то как ведёт себя программа?
    Во-вторых, что значит
    Возможно потому, что у меня каждый элемент в БД имеет вид
    ('Мазаново',), ('Молчаново',)

    У тебя так представлены данные в БД? Или ты просто сделал print() и увидел незнакомые буквы?
    Не путай представление в БД с тем, как эти данные представляются в Питоне после выборки, и с тем, как эти же данные выводятся в консоль.
    Написано