Задать вопрос
  • Как запустить Python с консолью и без?

    Vindicar
    @Vindicar
    Александр Ананченко, тогда в чем вопрос вообще. Любой упаковщик Питона (компиляторов под питон всё же нет) умеет скрывать окно консоли, почитай справку по нему. В пиинсталлере это параметр -W, вроде.
  • В чем преимущества процессов над потоками?

    Vindicar
    @Vindicar
    mkone112,
    как с тредами так и с потоками.

    ты имел ввиду как с процессами, так и с потоками?

    С процессами сложнее - хотя возможно, если используешь разделяемую память. В противном случае процесс, ответственный за переменную, будет всё равно обрабатывать сообщения "инкрементни её" по одному, так что состояния гонки не будет.
  • Зачем нужны потоки?

    Vindicar
    @Vindicar
    mkone112, может быть. Многопроцессность, ИМХО, обрела популярность из-за проблем с GIL, так как несколько потоков не давали выигрыша на многоядерных процах, а несколько процессов давали.
    А может быть, все так и будут делать как привыкли. =)
  • Зачем нужны потоки?

    Vindicar
    @Vindicar
    mkone112, ну можно и так сказать, да.
    Асинхронщина здорово потеснила их, конечно.
  • Как выдать роль пользователю?

    Vindicar
    @Vindicar
    await cur.execute("UPDATE profile SET admin='Хелпер' WHERE uid=%s", user.id)

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

    Vindicar
    @Vindicar
    Отступы почини. Кнопка </> в помощь.
  • Как правильно распараллелить задачи?

    Vindicar
    @Vindicar
    По пока получается так, что первые две (cpu_info и system_info) работают «нормально», но потом начинает выполняться docker_info (самая долго выполняющаяся) и все остальные её всё равно ждут.


    Переформулируй, а то непонятно. У тебя первые две функции сразу отрабатывают, или же ждут третьей?
  • Почему код правильно работает только на первой викторине?

    Vindicar
    @Vindicar
    if otvet[3] == polle.option_ids[0]:
    Как именно работает поле option_ids?

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

    Vindicar
    @Vindicar
    Retr0Hacker, ну да, это отображение объектов по умолчанию.
    Если ты хочешь кастомизировать преобразование объекта в строку, определи в нём магический метод __str__(). Он должен принимать только self и возвращать строковое представление этого объекта.
  • Почему sqlite3 не сохраняет запись?

    Vindicar
    @Vindicar
    lok101, ну я бы посоветовал проверить путь к БД для начала.
    Ты используешь относительный путь, он будет зависеть от текущего каталога. Удали файл с базой данных, и тогда уже проверяй.
    Если он не будет создан - значит, итоговый путь не там, где ты думаешь.
    Если он будет создан, но будет пуст - значит, дело в запросе.
  • Где я поймал invalid syntax?

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

    Потом пройдись по классам. Как создавать и удалять объекты, какие есть области видимости в классе (локальные переменные метода, атрибуты экземпляра класса, атрибуты класса, глобальные переменные). Свойства.

    Чуток поэкспериментируй с декораторами, например, попробуй написать декоратор для мемоизации (кэширование результата вызова функции). Просто чтобы освоиться с концепцией "функция - тоже объект".

    Если интересно повозиться с сетями, начала освой простой сетевой чат "один клиент - один сервер". Потом почитай про асинхронное программирование, и попробуй портировать сервер на asyncio. Получится - попробуй сделать так, чтобы сервер мог обслуживать несколько клиентов одновременно.

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

    Vindicar
    @Vindicar
    Артём Смирнов,
    Время жизни данных о пользователе - время обработки одного сообщения. Время жизни объекта-кога - время работы скрипта-бота.
    Как следствие, тебе нет никакого смысла хранить эти переменные в атрибутах кога, они всё равно будут меняться от сообщения к сообщению, и их придётся пересоздавать. А значит, им самое место в локальных переменных в обработчике события.
  • Как удалить библиотеку с Python?

    Vindicar
    @Vindicar
    Maxwell012, нет. Либо сноси по одной, либо переставь Питон целиком.
    Вообще на будущее можешь попробовать работать с виртуальными окружениями. Их можно грохнуть и пересоздать, не трогая основную установку питона.
  • Почему перестает работать приложение на VPS после закрытия SSH?

    Vindicar
    @Vindicar
    maxemga, ну я бы вообще смотрел на третью опцию сначала. Она сложная, но зато её потом можно просто оставить как есть.
  • Как с помощью GPS и Arduino, надёжно и безопасно вывести человека из леса?

    Vindicar
    @Vindicar
    NedoKoder, есть и готовые автономные навигаторы. Если карты предзагружены, то сотовая связь нужна только для ускорения старта. Спутники GPS передают свой альманах, нужный для ориентации по ним, каждые 10-15 минут, но если есть доступ в интернет, то можно скачать актуальную версию быстрее. Это называется time to first fix.

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

    В общем, если ты это делаешь только как разминку для ума и рук, то так и напиши в вопросе, избежишь кучи вопросов вида "нахрена?"
    А если всерьез думаешь переплюнуть целый рынок навигационных устройств... нахрена?
  • Как создать напоминание в телеграм боте? Напоминалка каждый месяц?

    Vindicar
    @Vindicar
    PinkPonySama, ну если это единственный код в программе, то да, будет.
    Но ведь тебе нужно было его подружить с телеграм-ботом, и я советовал через aiogram.

    Асинхронный код весь исполняется в одном потоке. По сути, когда ты делаешь await, ты говоришь "выполни вот эту операцию, а пока она выполняется, посмотри, что ещё можно поделать. Как выполнится, вернёшься сюда". При этом тебе не приходится задумываться, что там у нас в очереди на выполнение, и куда нужно будет потом вернуться.
    Это удобно для приложений, ориентированных на ввод-вывод, например, на сеть. Отправил данные на вывод, или ждёшь их на вводе - а пока это всё происходит, программа может заняться чем-то ещё.
    Но в то же время, пока корутина (async функция) работает над чем-то кроме await операции, она не даст никакой другой корутине исполниться. Т.е. если пришли данные из сети, бот не сможет на них отреагировать, пока текущая корутина не уступит очередь.
    Как следствие, длинные синхронные операции (вроде time.sleep()) подвешивают асинхронную программу только в путь.
  • Как создать напоминание в телеграм боте? Напоминалка каждый месяц?

    Vindicar
    @Vindicar
    PinkPonySama, я не очень хорошо знаком с вебхуками, так что помочь тут не могу.
    Но бесконечную задачу сделать просто.
    async def inifinite_task():
        while True:
            await do_something_useful() #выполняем один цикл работы
            await asyncio.sleep(60) #спим

    Запускать её надо строго через asyncio.create_task(infinite_task()), а не через await.
    Соответственно, у тебя будет функция вида
    async def do_something_useful():
        pass # тут собственно один цикл работы
  • Как сделать, чтобы данный скрипт корректно отбирал IDы?

    Vindicar
    @Vindicar
    for i in range(99999999):
        user_id = db.check_id(i)

    Нахрена? Зачем тебе два ID у одной сущности?
  • Как заменить {} на рандом элемент?

    Vindicar
    @Vindicar
    wirflve, находить пары скобок (можно регуляркой, можно тупо через index()), вытаскивать подстроку между ними, разделять её по символу /, из полученного списка уже делать choice().