• Как поменять global на return в коде? Как сделать, чтобы все сообщения от пользователя из разных функций передавались в последнюю функцию?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Зачем у вас тег JIRA в этом вопросе, если вопрос никакого отношения не имеет к ней?
    Ваша проблема в том, что вы не знаете языка, на котором пытаетесь писать. Вернее даже не писать, а исправлять что-то уже написанное.

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

    Просто правильный ответ на ваш вопрос будет не понят, или придётся объяснять с самых азов, или решать за вас вашу проблему, чему противореит суть данного ресурса.
    Тут готовы помочь, что-то пояснить, ответить на конкретные вопросы, но не делать за кого-то чужую работу и не формировать индивидуальные курсы питона с нуля. С этим надо идти во фриланс.
    Ответ написан
    Комментировать
  • Как решить ошибку RuntimeWarning: Enable tracemalloc to get the object allocation traceback?

    @igor6130
    Вы запускаете асинхронные функции как синхронные. В ошибке об этом сказано.
    Ответ написан
    3 комментария
  • Как правильно сделать структуру базы данных?

    Masterbeard
    @Masterbeard
    Люблю бывать там, куда Макар телят не гонял.
    Вы хотите сказать что mariadb не поддерживает связь между таблицами "Один-ко-многим"?
    Давайте посмотрим как организовать связь между таблицей "Wine" и таблицей "Grape". В каждой из этих таблиц есть поле с уникальным идентификатором "wine_id" и "grape_id". Создадим таблицу "grapes_to_wine" в которой будем хранить "wine_id" и "grape_id". Связываем таблицы по схеме: таблица "Wine" связана с таблицей "grapes_to_wine" по полю "wine_id" отношением "один ко многим" и таблица "Grape" связана с таблицей "grapes_to_wine" по полю "grape_id" отношением "один ко многим". В итоге получаем структуру при которой к каждому элементу таблицы "Wine" мы можем соотнести любое количество элементов таблицы "Grape".
    Как то так.
    Ответ написан
    4 комментария
  • Почему при запуске скрипта Python пишет это?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Возьмите и переведите последнюю строку.
    Ответ написан
    Комментировать
  • Как оптимизировать задачу?

    GigaLORDex
    @GigaLORDex
    Бизнес-Системный аналитик
    Я бы еще уточнил по бизнес-процессу, а действительно ли надо каждые 6 часов дергать всех клиентов и запрашивать по ним, как вариант, можно пойти таким путем:
    - Первично дергаем всех клиентов (50к) и проверяем на долг.
    - Далее каждые 6 часов запросом дергаем только тех клиентов, по которым были взаиморасчеты. (ведь в базе могут быть клиенты, с которым взаиморасчеты уже 5 лет никто не вёл, они исторически там лежат, зачем по ним каждый раз запрашивать)
    Ответ написан
    Комментировать
  • Как в Python перевести string в bytes, не меняя string?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Если вы хотите сохранить в БД бинарные данные. то у вас есть три варианта:
    1) Хранить в БД данные в поле типа binary blob. В таком поле может храниться произвольный набор байтов, он не птается преобраховаться в строку при работе.
    2) Хранить в БД экранированную строку в поле обычного строкового типа. При этом все непечатные и спец-символы должны быть экранированны специальной последовательностью, которая состоит из печатных обычных символов. Тогда нужно перед испольованием полученных из БД данных разэкранировать строку и получить байты.
    3) Можно хранить данные в БД в обычном текстовом или текстовом blob-поле, но в виде закодированно последовательности base16 или base64. В base64 каждые два байта кодируются тремя символами из 64-битного набора печатных символов. Нужно кодировать и декодировать такие строки при сохранении\загрузке.

    Вам больше всего подходит base64. Посмотрите в документации как с этим работать
    Ответ написан
    4 комментария
  • Почему попытка обратиться к только что созданной таблице вызывает ошибку "no such table"?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Слушай автор давай табличку по другому переделаем. Вот так

    CREATE TABLE IF NOT EXISTS warning(id INT, user_id INT, count INT);


    А то твое изделие зашкварно совсем.
    Ответ написан
    Комментировать
  • Проверка, инвентаризация и аудит Linux машин, как можно узнать про установленный софт?

    Adamos
    @Adamos
    Платный софт перебиранием /usr/bin искать бесполезно.
    Например, IDE от JetBrains (как образец платного софта) - это тупо папка, которая может лежать где угодно, программа запускается лежащим в этой папке скриптом.
    Может быть, имеет смысл искать не установленный софт, а - запускавшийся? Получая список файлов и папок в "хомяке" пользователя (в частности, ~/.config, ~/.local и т.п.), где уж платные-то программы непременно создадут свои записи.
    Ну, и с Wine, конечно, отдельная песня...
    Ответ написан
    1 комментарий
  • Создавать телеграм ботов на С# или Python?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    В вакууме да, на python может быть чуть проще (и то далеко не факт).
    Однако написание ботов в целом довольно комплексная и не самая простая задача. Поэтому если знаете основы шарпа то пишите на шарпе - в противном случае параллельно с написанием бота придется заново учить синтаксис, что сводит на нет даже потенциальное различие в сложности.
    Ответ написан
    1 комментарий
  • Как в python вывести график на основе данных?

    MrShandy
    @MrShandy
    Python
    Ну вот раз в N недель/дней/часов парсишь цену, заносишь время и цену в базу данных, а уже потом рисуешь график
    Вот, например, статья на хабре https://habr.com/ru/post/468295/
    Ответ написан
    Комментировать
  • Как создать язык программирования?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Как создать свой язык программирования?

    Точно так же, как и любую другую программу: сначала спроектировать, а потом реализовать.

    Без другого языка программирования! Полностью с нуля.

    В самом низу находится машинный код. Выглядит примерно вот так:
    08 04 83 fa 08 04 83 fb 08 04 83 fd 08 04 84 00
    У каждого процессора есть свой набор инструкций, которые кодируются машинным кодом. Открываем справочник и пишем нужный код для нужной ОС/железа. Ничего сложного, правда же? =)

    Ведь как-то создали первый ЯП.

    Достаточно почитать историю появления первых ЭВМ. Они представляли из себя набор переключателей отдельных битов, которые позже эволюционировали в перфокарты, которые в свою очередь представляли из себя прообраз современных исполняемых файлов. С увеличением количества доступных команд, усложнением техники и появлением накопителей программы так же становились все сложнее и сложнее: поэтому решили упростить запись и придумали первый ассемблер. Дальнейшее развитие привело к появлению первого ЯП высокого уровня и далее более высокие уровни абстракции, используя которые сегодня пишутся все программы.

    Так что в вашем случае вам надо пройти весь этот путь самостоятельно. Примерно так:
    1. На машинном коде реализовать минимальный ассемблер
    2. Используя свой минимальный ассемблер реализовать простейший компилятор этого ассемблера
    3. Расширить компилятор ассемблера до стандартного набора инструкций
    4. На ассемблере реализовать транслятор и компилятор ЯП высокого уровня
    5. Реализовать необходимый набор инструкций для написания компилятора этого же ЯП
    6. Написать этот самый компилятор своего ЯП на нём же и далее уже скомпилировать первую самостоятельную версию своего ЯП без использования других ЯП
    Ответ написан
    3 комментария
  • Как сделать вывод цветного текста в txt файл?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Никак. txt - простой текстовый формат и что такое "цвет" он не знает.
    Ответ написан
    Комментировать
  • Почему код выдает ошибку, хотя файл llvmlite.dl находится в указанном каталоге?

    freeExec
    @freeExec
    Участник OpenStreetMap
    А ещё там написано
    or one of its dependencies

    И вообще, просто наличие файла не достаточное условие.
    Ответ написан
    Комментировать
  • Проблема одновременных задач?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Запускать один скрипт, который выгребает из БД задания и выполняет их параллельно, например с помощью multiprocessing.
    Ответ написан
    Комментировать
  • Что дешевле: переменные или массив?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Для вашего случая нет разницы. Нужно руководстоваться не соображениями производительности, а соображенями понятности кода. Если код легко воспринимать и легко модифицировать под изменения задачи в ближайшем прогнозируемом будущем, то это правильно написанный код.
    Судя по ашему вопросу, опыта у вас не так много.
    Вопросы прихводительности в таких вещах придут позже. Сейчас сконцентрируйтесь на алгоритмах, и побльше практики. Найдите ментора и отдавайте ему код на ревью. Читайте чужой код других проектов, чтобы набраться опыта и начитанности.
    Ответ написан
    Комментировать
  • Не получается вернуть строку. Как исправить?

    @res2001
    Developer, ex-admin
    1. Лучше бы вы использовали std::string, а не нативные ("сырые") строки.
    2. Нативные строки - это не строки в привычном для С++ смысле (и в смысле интерпретируемых ЯП). У них нет встроенных операций типа конкатенации, выделения подстрок и т.п. Все это реализуется функциями в стиле Си str*
    3. Если вы хотите вернуть сырую строку, то надо:
    3.1. Массив под строку выделять в динамической памяти (или передавать его как параметр в функцию и его заполнять). Сейчас у вас автоматический массив, а он исчезнет, как только отработает оператор return и строка по факту не вернется (хотя вернется указатель, но он будет указывать в место на стеке, в котором уже нет вашей строки).
    3.2. Возвращать char*. Сейчас тип возвращаемого значения в вашей функции char - а это один символ, а не строка.
    4. Размер строки явно будет больше, чем size байт. На сколько больше - нельзя сказать заранее. Поэтому обычно выделяют достаточно большой буфер с запасом, чтоб покрыть все возможные варианты и при добавлении в буфер очередной подстроки контролируют размер буфера - чтоб оставалось место для очередной добавляемого куска и завершающего нулевого символа. Строка может быть равна size только в случае, если все числа в массиве будут состоять из одной десятичной цифры. Да и в этом случае требуется дополнительный байт на нулевой символ. Так что минимальный размер буфера должен быть size+1, реально он должен быть еще больше.
    Ответ написан
    Комментировать
  • Как изменить вывод из PyMySQL?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    1. Отложить ботошлепство.
    2. Найти в интернете любой структурированный материал по изучению python
    3. Изучить его, попутно выполняя приведенные примеры
    4. Вернуться к написанию бота
    Ответ написан
    Комментировать
  • С чего начать изучение ML, AI и т. д. чтобы успеть к сроку?

    @dmshar
    А тему курсовой работы мы должны угадать?
    А что такое "чуть больше" чем азы Python - т.е. до операторов цикла и условных операторов вы уже дошли?
    А учитесь вы на математическом факультете московского университета, или на танцевально-астрономическом факультете мухосранского мелиоративного колледжа?
    А по какому предмету курсовая должна угадать система искусственного интеллекта, которую мы подключим, что-бы понять, чего-же тут хотел сказать интеллект естественный?
    Впрочем изучить ИИ "до 10-ых чисел мая" - это, конечно, лучше и реальнее, чем "профессионал по ИИ за 7 дней".

    Но если вы решили эту информацию засекретить, то вот вам универсальный список:

    https://ru.stackoverflow.com/questions/Книги-и-уче...
    и
    https://www.cyberforum.ru/ai/thread2010374.html
    Ответ написан
    Комментировать
  • Нужно как то убрать пробелы в конце кода. Можно ли это сделать с текущем кодом или написать его по другому?

    @twistfire92
    Python backend developer
    Изучите метод join() у строк. Вам это поможет.
    Ответ написан
    Комментировать
  • Не понимаю данную бесконечность в операторе while?

    @deliro
    Давай по буковкам читать как в детском саду:

    икс равно нулю
    пока икс меньше десяти, печатай икс

    Икс всегда равно нулю, ты это нигде не меняешь, а ноль всегда меньше десяти. Выхода из цикла не планируется, по крайней мере, в пределах нашей вселенной
    Ответ написан
    Комментировать