• Как добавить ударение?

    Vindicar
    @Vindicar
    RTFM!
    ЕМНИП, добавь '\u0301' после буквы.
    Ответ написан
    2 комментария
  • Как корректно создать шаблон для json-файла?

    Vindicar
    @Vindicar
    RTFM!
    Почитать документацию по модулю json и осознать, что dumps() принимает на вход объект, который надо превратить в JSON-строку. Зачем ты сам что-то колхозишь через f-строку? Подай ему на вход словарь с нужными ключами, и всё.

    JSON объект соответствует питоновому словарю со стороковыми ключами, например:
    print(json.dumps( {'foo': 'bar'} ))
    Ответ написан
  • Как узнать нажата ли клавиша клавиатуры?

    Vindicar
    @Vindicar
    RTFM!
    Ну под виндой можно дёрнуть GetAsyncKeyState() (для одной клавиши) или GetKeyboardState() (для всех клавиш) через ctypes.
    Ответ написан
    Комментировать
  • Что делать если при открытии png файла с прозрачным фоном через OpenCV появляются гличи?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, скриншот в студию.
    Во-вторых, IMREAD_GRAYSCALE отрывает файлу канал прозрачности напрочь. Что там на самом деле было в прозрачных пикселях - фз.
    Попробуй IMREAD_UNCHANGED, тогда у тебя будет дополнительный канал прозрачности, который ты можешь сам принять к сведению - например, залить все прозрачные пиксели нужным цветом, или ещё что.
    Ответ написан
    Комментировать
  • Почему print(1 == True, 1 is True) вывод будет, True False, если можно по-подробнее?

    Vindicar
    @Vindicar
    RTFM!
    is проверяет идентичность, т.е. ссылаются ли два выражения на один и тот же объект.
    == проверяет эквивалентность, т.е. равны ли два объекта по содержанию.

    При этом == поддаётся переопределению, что позволяет разным объектам по-своему определять понятие равенства. is переопределять нельзя.

    Простой пример
    a = [1, 2, 3]  # создаём список
    b = list(a)  # создаём копию списка
    c = a  # создаём еще одну ссылку на список
    print(a == b)  # True - содержимое списка и копии равно друг другу
    print(a is b)  # False - но это два разных объекта
    print(a == c)  # True - объект равен самому себе
    print(a is c)  # True - потому что это один и тот же объект
    Ответ написан
    Комментировать
  • Как асинхронно отслеживать изменение json?

    Vindicar
    @Vindicar
    RTFM!
    Либо обязать сервер пинать бота при обновлении JSON, либо периодически опрашивать JSON ботом.
    Если сервер отдаёт заголовок Last-Modified, то можно передавать в заголовке If-Modified-Since дату и время предыдущего успешного опроса. Тогда сервер либо ответит 304 Not Modified, либо 200 OK если были изменения.
    Ответ написан
    Комментировать
  • Как подставить в скрипт имя файла после конвертации с изображения в pdf?

    Vindicar
    @Vindicar
    RTFM!
    Ну так почитай документацию на os.path. Найдёшь много интересных функций, например, splitext().

    А если использовать pathlib вместо древнего os.path, то можно найти метод Path.with_suffix().
    Ответ написан
    Комментировать
  • Почему не работает код пайтон для яндекс картинок?

    Vindicar
    @Vindicar
    RTFM!
    except:
                pass

    Бить по рукам за такое. Вот как раз поэтому: ты молча глотаешь возникающие исключения, и теперь не можешь понять, что именно идёт не так.

    Хотя бы выводи сведения об исключении в консоль.
    Ответ написан
    Комментировать
  • Как написать функцию со списком python?

    Vindicar
    @Vindicar
    RTFM!
    У тебя ошибка в логике.
    Ты проверяешь каждую возможную гласную, и если слово начинается с неё, ты выводишь "an".
    Но если слово НЕ начинается с этой гласной, ты выводишь "a", что ошибочно.
    Ведь тот факт, что слово не начинается с этой гласной, ещё не означает, что оно не начинается вообще с никакой гласной.
    Поэтому раздели две операции - проверка гласной, и вывод.
    Ну или научись пользоваться оператором in, как выше подсказал Dmitrii.
    Ответ написан
    Комментировать
  • Выполнить другую функцию если первая выполняется дольше 15 секунд?

    Vindicar
    @Vindicar
    RTFM!
    Тривиально. Что-то вроде
    async def notify_long_task():
        'Выполняет оповещение о длинной операции.'
        await asyncio.sleep(15.0)  # ждём таймаут
        await send_notification('Извините, я что-то туплю.')  # оповещаем
    
    async def actual_long_task():
        notification = asyncio.create_task(notify_long_task())  # планируем оповестить
        await perform_long_task()  # потенциально долгая операция
        notification.cancel()  # отменяем оповещение, если оно ещё не сработало.
    Ответ написан
    Комментировать
  • Задача с перестановкой спичек?

    Vindicar
    @Vindicar
    RTFM!
    Шаг 1. Опиши каждую цифру числа как бинарную строку, где каждому биту соответствует спичка в цифре. 1 - спичка есть, 0 - нет. Тебе понадобится 7 бит на цифру, можно округлить до 8 и считать 8й бит всегда 0. Это, по сути, семисегментный индикатор.
    Шаг 2. Научись преобразовывать число из нескольких цифр в длинную бинарную строку. Если гарантируется, что число 4значное или меньше, то эта строка будет выражена как 4 байтовое беззнаковое целое.
    Шаг 3. Если сделать XOR между двумя такими строками, то значение 1 примут только биты, соответствующие пропавшим/появившимся спичкам. Посчитать число единичных бит нетрудно.
    Шаг 4. Перебирай числа по возрастанию, для очередного числа построй битовую строку. Если число единичных бит в строках равно (для их "записи" используется равное число спичек), а число единичных бит в XOR равно четырём (две спички переложили = две спички пропали + две появились), число подходит.

    За скорость, правда, не ручаюсь. Но есть возможности по оптимизации подсчёта единичных бит, и по оптимизации перебора (перебирать не все числа, а только те, которые можно выразить тем же числом спичек).
    Ответ написан
  • Как присвоить переменной значение локальной переменной?

    Vindicar
    @Vindicar
    RTFM!
    Ты написал глупость. Вот этот код
    conn = sqlite3.connect('shop.db')
    cursor = conn.cursor()
    nazvanie_tovara = nazvanie
    cost_tovara = cost
    data = [nazvanie_tovara, cost_tovara]
    cursor.execute("INSERT INTO tovary VALUES(?, ?);", data)
    conn.commit()

    выполнится один раз, перед запуском бота, до срабатывания обработчиков.
    Что-то мне подсказывает, что ты не этого хотел.

    Внеси это внутрь обработчика команды, тогда и глобальная переменная не понадобится.
    Ответ написан
  • Не получается запустить юниттест, что делать?

    Vindicar
    @Vindicar
    RTFM!
    Что-то я не пойму. Ты вызываешь free_space_algorithm() как метод экземпляра класса FurnitureArrangement.
    А в определении выше это не метод, это свободно стоящая функция.
    Или сделай её методом (добавь обязательный параметр self), или пометь её декоратором @staticmethod, или вынеси её из класса FurnitureArrangement и вызывай её как просто функцию.
    Ответ написан
    3 комментария
  • Как сделать Embed?

    Vindicar
    @Vindicar
    RTFM!
    Окей, гугл, disnake Embed.
    Получаешь ссылку с подробным туториалом, читаешь, осознаёшь.
    А ещё - учишься сначала гуглить, а только потом задавать вопросы.
    Ответ написан
  • Как сделать авто-перезагрузку кода Python?

    Vindicar
    @Vindicar
    RTFM!
    Быстрое и грязное решение
    while True:
        try:
            ... # твой код
        except Exception as err:
            print(err)
    Ответ написан
    2 комментария
  • Как установить библиотеку с github?

    Vindicar
    @Vindicar
    RTFM!
    Зависимости не установлены. Вообще обрати внимание, что в папке dist/python лежит файл .whl - этот wheel можно установить через менеджер пакетов pip, просто как pip install filename.whl. Тогда pip должен сам подтянуть нужные зависимости.
    Ответ написан
    2 комментария
  • Как отправить в телеграм бот определенные данные из полученных запросом?

    Vindicar
    @Vindicar
    RTFM!
    Ну так перебирай элементы pol циклом, если для текущего элемента ключ 'bd' имеет правильное значение, отправляешь текущий элемент и прерываешь цикл. Если такого элемента так и не нашлось, сообщаешь об этом.

    Это знание цикла for, ветвления и базовых операций со списками и словарями, тащем-то. Такие азы стоит выучить до того как заниматься ботошлёпством.
    Ответ написан
    3 комментария
  • Как хранить общие для всех пользователей переменные в aiogram?

    Vindicar
    @Vindicar
    RTFM!
    Зависит от того, насколько велики эти данные и насколько легко их можно восстановить при перезапуске бота.
    Если невелики, и восстановить легко - почему бы и нет.
    Если велики (сотни мегабайт) или если нужно отдавать старые данные если сам сайт лежит, то лучше сохранить их в более персистентное хранилище (БД или файл).
    Ответ написан
    Комментировать
  • Как решить задачу?

    Vindicar
    @Vindicar
    RTFM!
    Вообще проблема в задании: фраза "какое количество символов из S входит в J" не содержит пояснения, могут ли быть повторы в строках S и J, и должны ли они учитываться. Я предполагаю, что повторы в J учитываться не должны, а повторы в S - должны.

    В твоём коде, если в строке J есть повторяющиеся символы, код даст неправильный ответ. Пример:
    a = 'AAB'
    b = 'AcdefBfedc'

    Твой код даст ответ 3, а не 2.

    Попробуй проще - пройди по символам строки b, для каждого символа проверь, входит ли он в строку a.
    Ответ написан
    Комментировать
  • Можно ли получить видео с вебкамеры?

    Vindicar
    @Vindicar
    RTFM!
    Если ты имеешь ввиду отправку видеопотока, то тут очень много "но".
    Ты просишь ссылку? Это подразумевает, что на целевой машине должен быть развёрнут сервер для потокового вещания, и он должен быть доступен извне, из интернета. Это условие будет выполняться?
    Или же у тебя должен быть развёрнут какой-то промежуточный сервер в интернете, на который скрипт будет коннектиться, и которому будет передавать видео для ретрансляции.

    Вообще это реализуется и без питона, например с помощью всё того же ffmpeg. Но в использование ffmpeg тоже нужно въезжать.
    Ответ написан
    Комментировать