Задать вопрос
  • От чего компьютер решил просыпаться?

    Vindicar
    @Vindicar
    RTFM!
    Проверь планировщик задач. При создании задачи есть опция "будить ПК", и Windows Update мало того что обожает её ставить, так ещё и возвращает её на место, если эту галку убрать с его задачи.
    Я когда с этим столкнулся, в итоге написал скрипт на powershell, который отключает эту опцию у всех задач - и поставил его в планировщик с триггером "при создании или изменении задачи".
    Параметры действия для задачи

    Программа или сценарий:
    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

    Параметры запуска:
    -Command "& {Get-ScheduledTask | where-object {$_.settings.waketorun} | ForEach-Object -Process {$_.settings.waketorun=$FALSE; Set-ScheduledTask -InputObject $_}}"

    Ответ написан
    1 комментарий
  • Есть ли кейс default в switch(match) у питона?

    Vindicar
    @Vindicar
    RTFM!
    case _:
    Но вообще switch в питоне та ещё штучка, с ним надо быть очень осторожным. Если веток немного - я бы оставил if-elif-else.
    Ответ написан
  • Почему Chrome бесконечно посылает пустые запросы?

    Vindicar
    @Vindicar
    RTFM!
    while request != 'quit':

    И впрямь, почему программа циклится...
    Если бы только в документации было описано поведение read(), когда соединение к клиенту закрыто!
    Ответ написан
    2 комментария
  • Как исправить ошибку синтаксиса при аггрегации (mongodb discord.py)?

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

    Vindicar
    @Vindicar
    RTFM!
    1. Находишь документацию на библиотеку для дискорда, которую ты собираешься использовать.
    2. Ищешь в ней, как получить коллекцию пользователей сервера.
    3. Перебираешь коллекцию пользователей, для каждого наращиваешь либо счётчик пользователей. либо счётчик ботов. В итоге формируешь текст сообщения.
    4. Ищешь в документации, как отправить embed.
    5. По этому образцу формируешь и отправляешь embed с твоим текстом.

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

    Vindicar
    @Vindicar
    RTFM!
    Ну идея такая...
    Допустим у нас K человек, и предположим что мы вызвали N машин. Первую оценку N1 можно получить так - это количество чисел больше 210. Меньше этого количества машин мы не обойдемся.
    Вторую оценку N2 можно получить так: число человек / 4 и округлить вверх. Соответственно, начинаем поиск N начиная с max(N1, N2) и идём вверх.

    Раз на переднем сидении может сидеть человек любого веса, то тогда имеет смысл "выкинуть" N наибольших чисел из списка - этих людей мы посадим на передние сидения.
    Тогда остальные M = N - K чисел надо будет попытаться разбить на тройки так, чтобы сумма каждой тройки не превышала 210 кг. А значит, сумма этих чисел, деленная на 210, даст нам третью оценку N3 количества машин, т.е. "точно не меньше чем столько". Если N3 > N, значит, нужно увеличить N и попытаться снова.

    Однако реально может потребоваться больше, например, если у нас остались числа 90, 90, 90, 90, 60. Сумма даст 420, т.е. две машины, но легко увидеть, что реально понадобится больше, так как попытка подсадить человека на 60 кг в любую из машин даст перебор.

    Искать тройки можно следующим образом. У нас осталось M чисел для распределения по тройкам.
    Строим трёхмерный массив, где каждому измерению соответствует один человек из тройки. Значение ячейки 210 минус сумма весов этих людей. Тогда мы можем легко найти такую ячейку массива, которая ближе всего к нулю, но при этом положительная. Это будет "оптимальная" тройка, которая ближе всего к предельной нагрузке. Выкидываем из массива соответсвующие "срезы", т.е. исключаем эту тройку людей из рассмотрения, и ищем следующую тройку. А дальше есть два варианта.
    Либо все элементы массива оказываются отрицательны - тогда оставшиеся люди не могут сформировать тройки, их нужно делить на пары по аналогии.
    Либо у нас в массиве остаётся три или меньше элементов. В этом случае эти элементы формируют последнюю (возможно неполную) тройку.
    Так или иначе, количество "троек" и "пар" должно совпасть с предполагаемым количеством N машин. Если их больше - нужно увеличить N и попытаться снова.

    Стоит обратить внимание что массивы "троек" и "пар" будут симметричными, а потом достаточно считать только их часть.
    Ответ написан
    1 комментарий
  • Как занести вызов класса в список?

    Vindicar
    @Vindicar
    RTFM!
    x for x in data_dict
    если data_dict - это то что ты привел, то ты перебираешь ключи словаря ("status", "data")
    Тогда уж
    [item for item in data_dict['data'] if item['name'] == 'name1']
    Ответ написан
  • SQL как исправить ошибку?

    Vindicar
    @Vindicar
    RTFM!
    1. Не генерируй запросы через форматирование строк. Используй placeholders. Начиная со слов "the DB-API’s parameter substitution"
    2. Если тебе нужно вставить запись, если её нет, или не делать ничего, если она есть, почитай про INSERT ON CONFLICT DO NOTHING. Ну или про INSERT ON CONFLICT DO UPDATE, если нужно "вставить новую или обновить существующую".
    Ответ написан
    1 комментарий
  • Как передать путь до файлов скрипту на питоне через контекстное меню windows?

    Vindicar
    @Vindicar
    RTFM!
    Не, проблема не в питоне, проблема в винде.
    На стэковерфлоу предложено решение - перенеси свою программу в пункт "Отправить..." (Send To), там требуемое поведение поддерживается лучше.
    Если этого недостаточно, придётся писать плагин для windows explorer.
    Ответ написан
  • Как сделать проверку на совпадении элемента из списка и значение в sqlite3?

    Vindicar
    @Vindicar
    RTFM!
    .fetchone()[0]
    Выстрелил себе в ногу, называется. .fetchone() может вернуть None, если SELECT не нашел ни одной подходящей записи, и тогда попытка обратиться по индексу сгенерирует
    исключение
    TypeError: 'NoneType' object is not subscriptable

    Так что проверяй, что тебе вернул fetchone().
    Ответ написан
  • Какие запросы или домены нагружают сервер?

    Vindicar
    @Vindicar
    RTFM!
    Включить логирование запросов HTTP-сервером на несколько минут (чтобы всё дисковое пространство не забило), потом проанализировать логи?
    Ответ написан
  • Как правильно настроить бот на python?

    Vindicar
    @Vindicar
    RTFM!
    Быстрый гуглинг показывает, что content_types для появления юзера может быть new_chat_members, а не new_chat_member. Проверь, работает ли.
    Ответ написан
  • Как читать документацию discord.py?

    Vindicar
    @Vindicar
    RTFM!
    Вопрос и впрямь странный.
    Нужно определиться, что именно ты ищешь, сообразить, какие могут быть ключевые слова, и искать по ним.
    В списке свойств каждого класса свойства и методы обычно кликабельны, так что можно перейти на подробное описание. Тип свойства указан в синтаксисе type hints стандартного модуля typing.
    Например, discord.Client.activity имеет тип Optional[BaseActivity], т.е. это либо None, либо экземпляр класса-наследника BaseActivity. Перейдя по ссылке, сразу видим список классов-потомков - корневой Activity и три наследника: Game, Streaming, CustomActivity. Дальше уже решаешь, какой тебе подойдёт лучше.
    Ответ написан
    Комментировать
  • При создании команды unban discord.py выдает эту ошибку. Command raised an exception: AttributeError: 'str' object has no attribute 'name' что делать?

    Vindicar
    @Vindicar
    RTFM!
    1. Включить голову.
    2. Почитать документацию про конвертацию параметров в обработчиках команд бота.
    3. Осознать, что в описании обработчика async def unban(ctx,*,member): member не имеет указания типа, а потому discord.py оставляет его строкой.
    4. Сопоставить этот факт с тем, что обращение member.name генерирует ошибку "объект строки не имеет атрибута name"
    5. Хлопнуть себя по лбу.
    6. Вставить в объявление обработчика указание типа для member: member: discord.Member
    Ответ написан
    Комментировать
  • Циклический сдвиг в Python?

    Vindicar
    @Vindicar
    RTFM!
    N=int(input())
    Программа ждёт ввода, не?
    А зачем, кстати, ждёт?
    Ответ написан
    1 комментарий
  • Как сравнить строку с массивом на python?

    Vindicar
    @Vindicar
    RTFM!
    Проще записать допустимые символы не массивом, а множеством, а потом воспользоваться методами множества.
    tag = 'HFDJFUАВЫВHJFDSJK'
    alpha = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }
    if alpha.issuperset(tag): # что делают issuperset() и issubset() почитаешь сам
      print('Всё хорошо')
    else:
      print('Есть недопустимые символы:', set(tag) - alpha )


    Но можно и вручную (может быть несколько медленнее):
    tag = 'HFDJFUАВЫВHJFDSJK'
    alpha = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ]
    if all( (symbol in alpha) for symbol in tag ):
      print('Всё хорошо')
    else:
      print('Есть недопустимые символы')
    Ответ написан
    Комментировать
  • Как запустить одновременно два потока Python?

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

    При этом нет никаких гарантий насчёт порядка их исполнения. Когда ОС решит переключиться с одного потока на другой - ты не контролируешь. У меня, например, твой первый код тоже выводит "hellohello".

    Так что да, твой код выполняется настолько "одновременно", насколько это возможно.
    Ответ написан
  • Как выполнить действие когда закончилась минута?

    Vindicar
    @Vindicar
    RTFM!
    1. Получить текущее время H:M:S
    2. Сделать задержку 60-S.
    3. Вывести время H:M+1

    Сработает почти всегда (ну, кроме високосной секунды).
    Ответ написан
    Комментировать
  • Логика столкновения kivy python?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала, зачем удалять и пересоздавать отдельных птиц, если можно просто "телепортировать" их к другому краю экрана?
    Кроме того, если я верно понял, у тебя delete_birds() отработает сразу, не дожидаясь конца анимации, так как метод start() не выполняет анимацию - он только планирует её постепенное выполнение в ходе дальнейшей работы окна. Используй событие on_complete в твоём объекте Animation.
    Подробности, как всегда, в документации.
    Ответ написан
    1 комментарий
  • Что делать если в python не работает match case?

    Vindicar
    @Vindicar
    RTFM!
    Что делать? Голову включить и подумать.
    Судя по message.from_user.id, message - это какой-то объект. А ты его пытаешься сравнивать со строками. Может, всё же match message.text: или что-то подобное?
    Ответ написан
    Комментировать