• Как удалить слова из списка в строке, почему не работает?

    Vindicar
    @Vindicar
    RTFM!
    split() разбивает по пробельным символам. У тебя в списке list_of_words будет 'Москва.', а не 'Москва' и '.'
    Ответ написан
    2 комментария
  • Почему в приведенном примере есть разница в расположении raise StopAsyncIteration?

    Vindicar
    @Vindicar
    RTFM!
    Я подозреваю, что по исчерпанию self.r (а range() - это не список, это одноразовая последовательность!) попытка вхождения в async for x in self.r приведёт к тому, что self.r просигнализирует об исчерпании последовательности. Как следствие, тело async for не выполнится ни разу, и управление выйдет за цикл. А за циклом - ничего, конец корутины. Поэтому, так как явного return не было, будет неявный return None. Что ты и наблюдаешь.
    Соответственно, ты никогда не получишь выброс StopIteration - его будет выкидывать self.r.__anext__(), но исключение будет перехватываться async for.
    Так что нужно добавить raise StopIteration() после async for, чтобы по опустошению self.r оно гарантировано выбрасывалось.
    Ответ написан
    1 комментарий
  • Aiogram как перейти на другой @dp message_handler()?

    Vindicar
    @Vindicar
    RTFM!
    Что у тебя за каша с вложенными обработчиками? Нет никаких гарантий, что это вообще будет работать.
    Научись пользоваться finite state machine.
    Ответ написан
    Комментировать
  • Как определять количества целых чисел на отрезке, интервале, полуинтервале?

    Vindicar
    @Vindicar
    RTFM!
    Разбей задачу на меньшие.
    1. Научиться разбирать входную строку. Можно регулярными выражениями, можно вручную с помощью split().
    В итоге у тебя должно быть 4 значения: начало интервала, входит ли начало (открытый/закрытый левый край), конец интервала, входит ли конец (открытый/закрытый правый край).
    2. Найти количество чисел в интервале.
    2.1. Округли левый край вверх (math.ceil()) чтобы найти первое целое число, входящее в интервал. Если результат округления равен левому краю И интервал открыт слева, прибавь к числу 1.
    2.2. Округли правый край вниз (math.floor()) чтобы найти последнее целое число. Если результат округления равен правому краю И интервал открыт справа, вычти из числа 1.
    2.3. Зная первое и последнее целое число, входящее в интервал, нужно вычесть первое из последнего и прибавить 1. Т.е. если первое число 2 а последнее 4, то в интервале 4 - 2 + 1 = 3 числа (2, 3, 4).
    Вот и всё. На питон переведёшь самостоятельно.
    Ответ написан
    1 комментарий
  • Как навсегда изменить цвет кнопки при нажатии в Python?

    Vindicar
    @Vindicar
    RTFM!
    Свяжи обработчик событий с кнопкой.
    Заведи глобальную переменную, которая считает, сколько раз была нажата кнопка.
    В обработчике событий читай эту переменную, увеличь её на 1, в зависимости от значения вызывай self.pushButton.setStyleSheet() с разными стилями.
    Ответ написан
    1 комментарий
  • Как правильно использовать run_in_executor?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала посмотри пакет arsenic, это селениум с асинхронной обёрткой. Можно будет переписать твой парсер на асинхронный подход, и не париться по поводу блокировки бота.
    Ответ написан
    Комментировать
  • Почему response.json( ) после fetch асинхронен?

    Vindicar
    @Vindicar
    RTFM!
    Потому что получение ответа от сервера - не то же самое, что получение контента. Скорее всего, мы получили только заголовки ответа, а в рамках соответствующих методов типа json() мы получаем тело ответа и парсим его.
    Ответ написан
    Комментировать
  • Как работает перенаправление вывода скрипта python?

    Vindicar
    @Vindicar
    RTFM!
    Скорее всего, проблема в работе с одним файлом через два дескриптора (один - stdout твоего скрипта, второй - stdout вызываемого). Попробуй принудительно сбрасывать данные в файл:
    print('Пытаемся запустить файл 1:', flush=True)
    Ответ написан
    1 комментарий
  • Фундаментальное отличие async await в python и javascript?

    Vindicar
    @Vindicar
    RTFM!
    Разницы нет, в том числе в твоём описании.
    Текущая корутина при await-вызове приостанавливается, её состояние сохраняется.
    При этом реактор может заниматься другими вещами (в частности, выполнением await-вызова).
    Когда await-вызов завершиться, состояние корутины будет восстановлено, и она продолжит выполнение.
    Ответ написан
    4 комментария
  • Что делать, если команда работает только если каждый раз перезапускать бота?

    Vindicar
    @Vindicar
    RTFM!
    Подозреваю, что async with p2p закрывает соединение с сервисом, с которым ты пытаешься работать. Собственно, with обычно для этого и предназначен - для высвобождения ресурсов.
    Либо переоткрывай клиента перед with, либо не используй with.
    Ответ написан
    Комментировать
  • В Pycharm код выполняется, из винды нет, почему?

    Vindicar
    @Vindicar
    RTFM!
    Открой окно терминала (cmd.exe), перейди в каталог скрипта, запусти его командой python myscript.py.
    Тогда окно терминала останется по завершению скрипта, и ты сможешь увидеть, что скрипт написал.
    Ответ написан
    Комментировать
  • Как получить результат выполнения задачи в Asyncio?

    Vindicar
    @Vindicar
    RTFM!
    await tay
    Угадай с трёх раз, что возвращает это выражение?
    Правильно. Значение, которое вернёт корутина, запущенная в рамках задачи. Просто присвой его переменной.
    А вообще в твоём случае и задачи-то не требуются.
    Освой asyncio.gather().
    Она позволит выполнить переданные корутины одновременно, и вернёт массив их результатов.
    results = await asyncio.gather(coro1(x,y), coro2(a,b), ...)
    res1, res2, ... = results
    Ответ написан
    Комментировать
  • Как в Python присвоить объекту класс, если имена классов хранятся в списке?

    Vindicar
    @Vindicar
    RTFM!
    Например, так.
    class KnownClasses:
        # используем статическое поле класса, 
        # так как к нему проще получить доступ из разных модулей
        collection: typing.Dict[str, typing.Type] = {}
    
    class SomeKnownClass:
        ...  # тут тело класса
    
    # регистрируем класс
    KnownClasses.collection[SomeKnownClass.__name__] = SomeKnownClass

    При желании можно заморочиться дальше, используя метаклассы, и избавиться от необходимости регистрировать класс вручную.
    Ответ написан
    Комментировать
  • Как запустить дискорд бота .ру для бесконечной работы?

    Vindicar
    @Vindicar
    RTFM!
    Запустить и пусть работает.

    Не, кроме шуток. Каков вопрос - таков ответ.
    Нужна машина, которая включена и подключена к сети 24/7. Например, арендованная VPS.
    Также нужно предусмотреть наиболее вероятные исключения в боте, отловить и обработать их.
    Также стоит предусмотреть средства аварийного перезапуска. Например, если на VPS установлен Debian-подобный дистрибутив, то можно оформить запуск бота через systemd. Это гарантирует перезапуск программы при перезагрузке, а также при его аварийном завершении.
    Ответ написан
    Комментировать
  • Почему скрипт не принимает переменные?

    Vindicar
    @Vindicar
    RTFM!
    Я подозреваю, что ты не подумал о типах данных.
    Из текстового файла ты можешь прочитать только строковой тип.
    А какой тип данных используют нужные тебе ID?
    Ответ написан
  • Как нейросети обрабатывают текстовую информацию?

    Vindicar
    @Vindicar
    RTFM!
    Один из подходов, если я не путаю, это seq2seq модель, она же рекуррентный энкодер.
    На базе текстов, подобных тем, которые планируется обрабатывать, строится автоэнкодер. Как обычно в автоэнкодерах, его первая половина учится "сжимать" входные данные (в нашем случае кодированный текст), а вторая половина учится их "распаковывать" обратно. При этом "несжатые" данные - это последовательность входов, а "сжатые" - статический вектор контекста, который некоторым (не обязательно известным нам) способом кодирует "смысл". Контроль успешности кодирования проверяется последующей "распаковкой" - на выходе автоэнкодера должна получиться та же самая последовательность, которая была на входе.
    Когда научились "сжимать" текст в вектор, этот вектор можно обрабатывать другими методами машинного обучения. Например, решать задачи классификации, регрессии и т.п.
    Тогда при обработке неизвестного текста он кодируется (например, производится лемматизация - устраняются грамматические числа, падежи и т.п.), прогоняется через первую половину автоэнкодера, а полученный вектор контекста подаётся на вход сети, которая и заточена под решение нашей задачи.

    Но ЕМНИП, это один из ранних подходов. Сейчас есть более продвинутые вещи, я просто о них в не курсе.
    Ответ написан
    Комментировать
  • Как сделать ИИ, или програму для ответов в викторин?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала - организовать захват экрана (скажем, через vidgear), прикрутить распознавание текста (скажем, через tesseract).
    А дальше - если ИИ должен отвечать только на заранее известные ему вопросы, то использовать какой-нибудь из алгоритмов полнотекстового поиска, где запрос - это распознанный текст вопроса.
    Альтернативно можно тупо искать наиболее похожий известный вопрос стандартным модулем difflib.
    Когда поняли, какой вопрос нам задают, используем pywinauto или pyautogui для ввода текста.
    Ответ написан
    2 комментария
  • Как организовать ограничение для записи по внешнему ключу?

    Vindicar
    @Vindicar
    RTFM!
    Я бы сделал связную таблицу ПроизводительТипа(id_типа, id_производителя), и заставил бы товар ссылаться на эту таблицу по композитному внешнему ключу, вместо того чтобы ссылаться напрямую на тип и производителя.
    Ответ написан
  • TypeError: 'NoneType' object is not subscriptable.?

    Vindicar
    @Vindicar
    RTFM!
    У тебя в твоем json не то, что ты ожидаешь.
    Где именно - нужно проверять по шагам, вместо лихого objects_data.get('data').get('list')[0]
    Действительно ли objects_data словарь? Есть ли там ключ data?
    Действительно ли по ключу data лежит словарь? Есть в этом словаре ключ list (подозреваю что нет)?
    Лови исключения блоком try-except, при исключении скидывай в какой-нибудь файл содержимое проблемного json, чтобы можно было посмотреть, что там тебе прилетело от сервера.
    Ответ написан
    Комментировать
  • Как мне оптимизировать цикл, чтобы он работал намного быстрее?

    Vindicar
    @Vindicar
    RTFM!
    0. Понять, про какой именно цикл речь.
    1. Замерить время выполнения частей цикла.
    2. Найти часть, которая тормозит.
    3. Понять, почему она тормозит.
    4. Написать реализацию, которая будет тормозить меньше.
    5. Проверить её в деле.
    Ответ написан
    Комментировать