Задать вопрос
  • Как написать функцию со списком 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 тоже нужно въезжать.
    Ответ написан
    Комментировать
  • Какую библиотеку использовать?

    Vindicar
    @Vindicar
    RTFM!
    Тебе нужно именно на питоне?

    Потому что имхо, это можно решить, если оформить приложение как службу Windows с помощью NSSM. Оно позволяет настроить автоперезапуск, в том числе.
    Ну а под никсами есть systemd или что-то подобное.

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

    Vindicar
    @Vindicar
    RTFM!
    1. Форматируй код как положено правилами сайта, кнопкой </>. Нечитаемо же.
    2. Что значит "не работает"? Просто ничего не делает? Останавливается с сообщением об uncaught exception? Компьютер спрыгивает со стола и начинает искать Сару Коннор? Программа может не работать многими способами, приводи описание симптомов и сообщения об ошибках. Сообщения об ошибках тоже стоит обернуть кнопкой </>.
    3. Я подозреваю, что дело именно в uncaught exception. В этом случае рекомендую почитать учебник по Питону, раздел о работе с исключениями. Хотя бы вот этот. Оберни отправку сообщения в блок try-except, при возникновении ошибки можно либо просто игнорировать её, либо добавлять в список "неудавшихся".
    Дальше с этим списком уже можно будет работать, например, попытаться убрать все "неудачные" user ID из joineduser, и записать очищенный список обратно в /home/example.txt.
    Ответ написан
    2 комментария
  • Как поправить код python?

    Vindicar
    @Vindicar
    RTFM!
    Что такое wr() и зачем оно нужно вообще?
    Просто почитай как работать с файлами в питоне, там никакие функции-обёртки не нужны.
    Ответ написан
  • Как исправить ошибку can't multiply sequence by non-int of type 'float'?

    Vindicar
    @Vindicar
    RTFM!
    Код феерический.
    #?!??!?!
        for i in array:
            for j in i:
                if array.index(i)==i.index(j):
                    ans+=[j]

    не будет работать, если в строке матрицы одно и то же число встречается дважды.
    Ну и зачем перебирать столбцы, если тебе уже известен индекс столбца - он равен индексу строки? Функцию range() ты вроде уже знаешь, освой метод append() списка, заодно.
    diagonal = []
    for i in range(len(array)):  # цикл по номерам строк матрицы
        diagonal.append(array[i, i])  # берём элементы, у которых номер строки и столбца одинаков


    ans[i]*m[i:]
    Ты умножаешь элемент массива ans[i] на список строк чего-то по имени m. Что такое m, оно же не определено в функции?
    X = []
    for i in range(len(array)):  # перебираем номера строк массива array
        x_item = 0  # скалярное произведение будет тут
        for j in range(len(diagonal)):  # перебираем номера элементов диагонали
            x_item += diagonal[j] * array[i, j]  # добавляем очередную часть произведения
        X.append(x_item)

    То же самое можно записать короче, например, так:
    X = []
    for row in array:
        X.append(sum( d*r for d, r in zip(diagonal, row) ))

    Но это сложнее для понимания новичку.
    Ответ написан
  • Корректно ли в C++ называть стек статической памятью?

    Vindicar
    @Vindicar
    RTFM!
    Кирилл Гусарев, по вашему определению статическая память - это секция инициализированных данных exeшника.
    ЕМНИП, C++ в эту секцию кладёт инициализирвоанные глобальные переменные. Насчёт статических локальных не уверен.

    Вообще программа имеет доступ к четырём видам памяти:
    - секция инициализированных данных выделяется загрузчиком, её содержимое загружается из EXE файла, где оно хранится как образ.
    - секция неинициализированных данных выделяется загрузчиком, её содержимое забивается нулями. В EXE файле хранится только её размер.
    - Насчёт стека не уверен. Вроде со стеком главного потока исполнения то же самое, его размер прописан в экзешнике. Но кто его выделяет - загрузчик или рантайм языка... я подозреваю, что загрузчик. Стеки дополнительных потоков выделяются по запросу программы.
    - куча выделяется по ходу работы программы. Менджер кучи Windows создаёт одну кучу для процесса, дальнейшее управление кучами - дело самого процесса.

    Всё это - только для виндовых EXE. Про линукс я не в курсе.

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

    Vindicar
    @Vindicar
    RTFM!
    Запомни простую вещь: никогда, никогда не формируй SQL-запросы форматированием строк. Ни f-строками, ни методом format(), ни %-форматированием. Ты сейчас на своей шкуре почувствовал, почему этого не стоит делать.
    И читай документаци, там написано как правильно. Более того, есть отдельный раздел как раз об этом. RTFM!
    Ответ написан
    Комментировать
  • Как / возможно ли вытащить аргуметы из класса?

    Vindicar
    @Vindicar
    RTFM!
    Функция dir() покажет, какие поля и методы есть в классе. Пробуй.
    Ответ написан
    Комментировать