• Как вывести все элементы списка из массива списков json в Python?

    Vindicar
    @Vindicar
    RTFM!
    1. Перестаём путать списки и словари, чтобы не сбивать с толку ни себя, ни советчиков.
    2. Пишем функцию, которая проверяет один элемент внешнего списка на предмет "подходит-не подходит", и возвращает True если он подходит.
    3. Грузим JSON с помощью модуля json.
    4. Используем list(filter(...)), чтобы получить отфильтрованный список элементов, указав функцию из п.2 в качестве функции фильтра.
    5. Если нужны дополнительные операции, то перебираем полученный список, для каждого элемента выполняем нужное тебе действие.
    6. Сохраняем итог в файл с помощью всё того же модуля json, например.
    Ответ написан
    Комментировать
  • Как достать ссылки на страницы при парсинге?

    Vindicar
    @Vindicar
    RTFM!
    Вот ссылка в коде сайта:

    Как проверял, что она в коде сайта? Небось через браузер?

    Правило первое: при ошибке записывай в файл то, что тебе прислал сервер, для последущего анализа. Может, сервер понял, что твой бот - это бот, и там "уходи, противный" вместо ожидаемой тобой страницы. А может, там динамический сайт, с контентом, подгружаемым через JS.
    Ответ написан
    Комментировать
  • Что делать с ошибкой OperationalError: no such column?

    Vindicar
    @Vindicar
    RTFM!
    Блин, да когда же вы читать научитесь, а?
    Никогда не используй f-строки для формирования sql-запроса, это либо даёт невалидный SQL (как в твоём случае), либо оставляет лазейку для SQL-инъекции.
    Используй подстановку параметров. Про это буквально в каждом мануале по работе с БД пишут, но ведь читать - не модно.
    cursor.execute("INSERT INTO masseges (id, massege) VALUES (NULL, ?)", (text,) )

    Ну и да. Правильно пишется message, если речь о сообщениях.
    Ответ написан
    2 комментария
  • Почему не пaлучяется вывести принт в текстовый документ 111.txt?

    Vindicar
    @Vindicar
    RTFM!
    Как ты запускаешь скрипт?

    Поясню, почему это важно. Ты указываешь относительный путь к файлу. В ходе работы скрипта путь будет скомбинирован с текущим рабочим каталогом скрипта - который совершенно необязательно совпадает с каталогом, где скрипт находится. В зависимости от того, как ты запускаешь скрипт, рабочий каталог будет разным.

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

    Vindicar
    @Vindicar
    RTFM!
    А почему он не должен этого делать? У тебя asd() объявлена, но нигде не упоминается и не вызывает, так что бот о ней ничего не знает.
    Ответ написан
  • Как оптимизировать алгоритм самонаведения ракеты?

    Vindicar
    @Vindicar
    RTFM!
    Уточню, velocity - это обычно вектор скорости, а speed - скалярная величина, модуль этого вектора.
    У тебя есть пара вариантов:
    а)
    MSL_VEL = (TGT_POS - MSL_POS).normalize() * MSL_SPD
    для ракеты, не знающей вектор скорости цели, а потому летящей без упреждения.
    б)
    MSL_VEL = (TGT_POS + TGT_VEL * GAME_TICK - MSL_POS).normalize() * MSL_SPD
    для ракеты с упреждением на один игровой тик.

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

    Vindicar
    @Vindicar
    RTFM!
    Ну т.е.:
    1. ты хочешь получить список пар ключ-значение из словаря
    2. каждое значение содержит список/кортеж строк
    3. тебя интересуют только те пары, в значении которых встречаются строки из заданной коллекции
    Так?
    b_set = frozenset(b)  # переделываем список b в неизменяемое множество
    result = {
        key: value  # генерируем словарь
        for key, value in a.items()  # на основании пар key-value словаря a
        if not b_set.isdisjoint(value)  # берём только те пары, в value которых есть элементы из b_set
    }

    А дальше итерируешь словарь result и делаешь с ним что тебе надо.
    Ответ написан
    1 комментарий
  • Как исправить ошибку с ИИ на tensorflow?

    Vindicar
    @Vindicar
    RTFM!
    Ты код-то сам писал вообще? Потому что какую-то абсолютно несвязную фигню творишь, как будто чатгпт что-то нагенерил.

    При обучении у тебя на входе модели свёрточный слой Conv2D. Такой слой по определению принимает на вход изображение. Ты задаёшь размер этого изображения как 28х28, что напоминает о популярной базе картинок цифр для обучения простых сетей MNIST. А дальше идёт вроде как простой классификатор на 10 классов, что тоже соответствует MNIST. Как будто из примера код взят.

    А при тестировании ты делаешь embedding текста и подаёшь на вход какие-то обрывки полученных токенов.
    Всё равно что пытаться присобачить половину ручной мясорубки к дизельному компрессору, потому что "ну оно же и там и там крутится!" Это вообще не может заработать в принципе.
    Ответ написан
    Комментировать
  • Как получить содержимое сообщения и ответа?

    Vindicar
    @Vindicar
    RTFM!
    Просто реагируешь на сообщение. В объекте сообщения есть свойство reference, которое может содержать ссылку на отвечаемое сообщение (или None, если это не ответ).

    Читай доки, там много интересного.
    Ответ написан
    Комментировать
  • Загрузка картинок через асинхронные коллбэки в JavaScript?

    Vindicar
    @Vindicar
    RTFM!
    JS на странице вообще-то не может обращаться к произвольным файлам на машине клиента - иначе сайты бы брутили важные пути к файлам, чтобы их скопировать и отослать на сервер.
    JS может обращаться только к файлам, которые пользователь поместил в поле выбора файла, или к файлам, доступным в Сети по URL (с поправкой на возможный контроль origin).

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

    Vindicar
    @Vindicar
    RTFM!
    Если ты используешь aiosqlite, то нужно использовать async with, а не просто with.
    Ответ написан
    Комментировать
  • Как удалить ссылку из txt после использования?

    Vindicar
    @Vindicar
    RTFM!
    Вместо random.choice() делаешь index = random.randrange(0, len(lines))
    Тогда у тебя не только будет random_line = lines[index], но и возможность сделать del lines[index] чтобы удалить эту строку. Однако удаление произойдёт только в твоём списке в памяти - тебе нужно будет записать список обратно. Открываешь файл для записи в текстовом режиме, и используешь метод writelines().
    Ответ написан
  • План обучения для создания бота для биржи?

    Vindicar
    @Vindicar
    RTFM!
    1. Основы выбранного языка. Понятие класса, экземпляра класса, метода и т.п. Структуры данных - для питона это списки, словари, кортежи в первую очередь. Пишешь простые примеры, пусть даже на уровне крестиков-ноликов.
    2. Основы сетевых приложений. Что такое сокет, что такое соединение, как оно устанавливается, как передаются и принимаются данные, как соединение разрывается. Совсем вглубь забираться не надо. Пишешь простой чат на две программы, одна сервер, другая клиент.
    3. Протокол HTTP как таковой. Что такое запрос, что такое ответ, что такое заголовки, что такое тело. Пробуешь скачать вебстраничку и сохранить её в файл, используя тот же requests.
    4. JSON как способ представления объектов. Стандартный модуль json в питоне. Пробуешь какое-нибудь открытое API, которое JSON отдаёт, экспериментируешь с ним.
    5. Разбираешься с вебсокетами.
    Ответ написан
    1 комментарий
  • Не получается вывести число, как это можно исправить?

    Vindicar
    @Vindicar
    RTFM!
    for i in range (m, n ): перебирает числа от m до n-1 включительно, т.е. он не включает n.
    Ответ написан
    Комментировать
  • Disnake непонятная ошибка. Кто может помочь?

    Vindicar
    @Vindicar
    RTFM!
    Какие интенты ты задаёшь боту?
    Если приложить волевое усилие и открыть документацию, то можно увидеть, что для работы on_raw_reaction_add требуется интент reactions.
    Ответ написан
    Комментировать
  • Стираются данные при записи в коде телеграм бота, как исправить?

    Vindicar
    @Vindicar
    RTFM!
    Читаем доки.
    Синхронный телебот по умолчанию выполняет обработчики в пуле потоков, чтобы один медленный обработчик не ставил колом всего бота. Как следствие, ты ловишь т.н. состояние гонки, когда несколько обработчиков (или несколько копий одного обработчика), работающих в разных потоках, одновременно обращаются к одному ресурсу - например, к твоему словарю suggested_photos, или к файлу, или ещё к чему. Косяки при этом могут возникать самые весёлые - и, что самое неприятное, они будут то появляться, то исчезать в зависимости от порядка исполнения потоков.

    Так что либо пробуй отключать многопоточность параметром конструктора Telebot (ссылку на доки я дал), либо разбирайся, как писать многопоточные приложения - например, защищая глобальные ресурсы бота мьютексом.

    Также можешь попробовать перейти на асинхронный вариант телебота, но там нужно понимать как вообще устроены асинхронные приложения.
    Ответ написан
    Комментировать
  • Как сделать параллельный цикл aiogram?

    Vindicar
    @Vindicar
    RTFM!
    Выносишь цикл проверки в отдельную корутину check_loop(), в main() делаешь
    async def main():
        logging.basicConfig(level=logging.INFO)
        async with ClientSession() as session:  # сессию лучше по сто раз не создавать
            check_task = asyncio.create_task(check_loop(session))  # создай её однажды и передай в check_loop
            try:
                bot = Bot(
                    token='"'
                )
                await dp.start_polling(bot)
            finally:
                check_task.cancel()  # внутри check_loop() сгенерируется прерывание asyncio.CancelledError

    Единственное, придётся в коде/конфиге прописать id чата, куда check_loop() будет отправлять сообщение с результатами.
    Ответ написан
    Комментировать
  • Как сделать программу для перемещения файлов?

    Vindicar
    @Vindicar
    RTFM!
    Составляешь список документов в постановлениях (модуль pathlib, метод Path.glob).
    Перебираешь строки csv файла (стандартный модуль csv в помощь).
    Для каждого уникального ID (номера) в csv ищешь подходящее имя файла в постановлениях. Можно простым разбиением имени по символу № (смотри str.split() и str.partition()).
    Определяешь желаемый путь, куда записать файл. Стандартный модуль pathlib в помощь.
    Перемещаешь файл вызовом shutil.move() (стандартный модуль shutil).
    Ответ написан
    2 комментария
  • Как сделать генерацию паролей на python?

    Vindicar
    @Vindicar
    RTFM!
    itertools.product() позволит перебрать все сочетания символов. Поиграв с параметрами, можно даже задать правила вида "первый символ - согласная, второй - цифра, ..." . Но для брутфорса обычно лучше словарная атака.
    Ответ написан
    Комментировать
  • Отправка сообщения aiogram в произвольной функции без handler использовав существующий bot?

    Vindicar
    @Vindicar
    RTFM!
    Очевидно, хранить существующего бота где-то. Или в глобальной переменной, или переделать функцию в метод класса и хранить ссылку на бота в поле класса. Главное, чтобы эта ссылка была в поле видимости твоего кода.

    Но я бы заметил, что слишком частое редактирование сообщения - не лучшая идея. Я бы разбил процесс на две части - обработчик обновлений от OpenAI складывает в какой-то буфер полученные части текста, а бот время от времени проверяет буфер и дописывает всё, что там лежит, в сообщение.
    Ответ написан
    1 комментарий