• Как исправить SyntaxError: positional argument follows keyword argument?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    0.Не пытаться писать ботов.
    1. Изучить, что такое аргументы, какие они бывают.
    2.Открыть гугл.переводчик, вставить текст ошибки и применить только-что полученные знания.
    Ответ написан
    7 комментариев
  • Python в чем ошибка? Почему SyntaxError?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Открыть учебник и читать заново. У вас там не одна ошибка, а целая куча в нескольких несчастных строках примитивного кода. И все ошибки - элементарны.. . И к тому же код не оформлен как положено.
    Ответ написан
    5 комментариев
  • Как вывести данные из одной таблицы для каждого ряда в другой?

    tumbler
    @tumbler Куратор тега Python
    бекенд-разработчик на python
    select user_id, count(*) from table1 inner join table2 using (user_id) group by user_id

    Примерно так. Список литературы: JOIN, GROUP BY
    Ответ написан
    2 комментария
  • Как покинуть discord сервер по его идентификатору в discord.py?

    1. Не используйте устаревшую документацию.
      59mQYWj.png
      Метода bot.leave_guild нет в приведенной библиотеке уже два года.

    2. Используйте конвертер объекта discord.Guild:
      5Udu5yr.png

    3. Зачем использовать псевдонимы команды для названия команды? Декоратор команды имеет аргумент name.

    4. Для проверки выполняющего команду в discord.py существуют проверки (checks).


    DEV_LIST = [...]
    
    def check_dev(ctx):
        """Check if command caller is dev"""
        return ctx.author.id in DEV_LIST
    
    @bot.command(name="server-leave")
    @commands.check(check_dev)
    async def __leave_from_server(ctx, server: discord.Guild = None):
        """Leave from selected server"""
        if server:
            await server.leave()
        else:
            await ctx.send("You need to specify server")
    Ответ написан
    Комментировать
  • Как сделать чтобы sql не выдавала синтаксическую ошибку?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Не использовать форматирование строк для формирования запросов.
    Ответ написан
    Комментировать
  • Динамически добавить elif ветки в функцию?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Именно "динамически добавить elif ветки в функцию" никак, а альтернатив вы просите не предлагать.
    Ответ написан
    Комментировать
  • Найдите перестановку по её номеру в лексикографическом порядке. Total - кол-во элементов, К - номер перестановки. Как сократить время программы?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Вы генерируете перестановки по одной, пока не отсчитаете k. Это медленно, потому что k может быть очень большим. Перестановок-то n! - это дофига много.

    Надо генерировать ее сразу по номеру.

    Посмотрите на первый элемент. У первых (n-1)! перестановок там 1, у следующих (n-1)! - там 2, потом идет группа, начинающихся с 3 и т.д.

    Уже вы можете понять в какой группе искомая k-ая перестановка. Тупо floor(k/(n-1)!) (если нумерация с 0 и перестановок и групп). Фактически, формула для первого элемента - a[0] = (k-1)/(n-1)! + 1.

    Дальше вы можете выкинуть из рассмотрения первый элемент. Сфокусируйтесь на группе с заданным известным первым элементом. Какой номер искомая перестановка имеет среди этих (n-1)!? Надо из k вычесть количество перестановок c меньшими первыми элементами (их (a[0]-1)*(n-1)!. Потом задача сводится к преведущей - сгенерировать k-ую перестановку среди оставшихся n-1 элементов.

    Если использовать какое-нибудь дерево отрезков, чтобы быстро искать j-ый пока не занятый элемент, то все решение будет за O(n log n). Если делать совсем просто - двумя циклами - то будет O(n^2). Гораздо быстрее вашего O(n!).

    Надо только аккуратно обработать случаи, когда (n-1)! слишком большое. Фактически, вам надо найти максимальный факториал, который меньше k. Пока не спуститесь до этого момента нужно сразу брать первый незанятый элемент и не считать факториал вообще.
    Ответ написан
    Комментировать
  • Почему MySQL не может запуститься?

    Предполагаю что не хватает оперативки для запуска, попробуйте увеличить значение innodb_buffer_pool_size
    в файле /etc/my.cnf

    Должно помочь

    А так посмотрите что говорит лог ошибок Mysql /var/log/mysql/error.log
    Ответ написан
    3 комментария
  • Зачем указывать в скобках родительский класс при определении дочерного класса?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Чтобы унаследовать свойства родительского класса. Добавьте в A поля и методы, разница станет заметна.
    Ответ написан
    Комментировать
  • Как в Python вывести таблицу как в примере?

    @Drill
    Вообще-то, Prettytable понимает multirow

    data = [
        {'ip':'192.168.0.2', 'model':'DES-3200-26', 'uptime': '3d 12:03:05', 'uplink state': '25: up\n26: up', 'uplink err': '0\n11', 'uplink mcast': '24560\n113'},
        {'ip':'192.168.0.3', 'model':'DES-3200-52', 'uptime': '1d 04:00:15', 'uplink state': '49: up\n50: up\n51: down\n52: down', 'uplink err': '10\n1133\n0\n0', 'uplink mcast': '5497812\n3145\n0\n0'},
    ]
    
    def set_data_for_PrettyTable(data):
        field_names = data[0].keys()
        rows = []
        for row in data:
            rows.append(row.values())
        return field_names, rows
    
    field_names, rows = set_data_for_PrettyTable(data)
    
    table = PrettyTable()
    table.hrules = 1
    table.field_names = field_names
    table.add_rows(rows)
    table.align["uplink state"] = "l"
    print(table)


    +-------------+-------------+-------------+--------------+------------+--------------+
    |      ip     |    model    |    uptime   | uplink state | uplink err | uplink mcast |
    +-------------+-------------+-------------+--------------+------------+--------------+
    | 192.168.0.2 | DES-3200-26 | 3d 12:03:05 | 25: up       |     0      |    24560     |
    |             |             |             | 26: up       |     11     |     113      |
    +-------------+-------------+-------------+--------------+------------+--------------+
    | 192.168.0.3 | DES-3200-52 | 1d 04:00:15 | 49: up       |     10     |   5497812    |
    |             |             |             | 50: up       |    1133    |     3145     |
    |             |             |             | 51: down     |     0      |      0       |
    |             |             |             | 52: down     |     0      |      0       |
    +-------------+-------------+-------------+--------------+------------+--------------+
    Ответ написан
    Комментировать
  • Для чего используется "@" перед переменными в Python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Для того, чтобы вы задали себе этот вопрос и открыли для себя пользу учебников. 61a0da3259ddf867054068.jpeg Целая глава посвящена вопросу!
    spoiler
    Эти жулики в роликах про ботов сами этот вопрос изучили, а вас не учат, а заставляют как обезьянок повторять тупые действия. Так вам и надо, неучи.
    Ответ написан
    Комментировать
  • Существует ли зрение для робота без программирования?

    @calculator212
    ну это ж бред в наше время, тратить ресурсы на такие базовые, по моему, вещи. Сам я, если что, хеловорлд на питоне или баше, ну может чуть больше.
    как по мне бред так рассуждать с знаниями "хеловорлд на питоне или баше", что-то +/- готовое есть на гитхабе.
    "робот, та херня, которую ты объехал заехав в комнату называется мяч, прикати его мне"
    Конечно люди добавят возможность распознавания речи, понимания смысла слов на русском языке, а потом отдадут это в свободный доступ в скомпилированном виде и с открытыми исходниками.
    каждый производитель робота пылесоса заново изобретает велосипед
    Они могут покупать ПО у компании специализирующейся на этом.
    Ответ написан
    5 комментариев
  • Как sys.stdin, который выглядит как словарь превратить в словарь?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Так делать нельзя:
    dict = json.loads(str(sys.stdin))
    Нужно либо так:
    dict = json.load(sys.stdin)
    либо так:
    dict = json.loads(sys.stdin.read())
    Приведите остальной код тоже. Там наверняка такие же ошибки.
    Ответ написан
    Комментировать
  • В чем идея и как работают шаблоны?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос очень хороший.
    А ответ на него очень простой.

    Шаблоны нужны для отделения логики приложения от логики отображения.
    Разделив их, мы получим сразу кучу выгод:
    • Нормальную структуру приложения, когда вывод начинается только после того, как отработала вся логика. То есть у нас никогда не будет проблем с ошибкой headers already sent, с возвратом json-а вместо html, с выводом в page header-е тех данных, которые появляются только в процессе работы скрипта
    • Мобильность - один и тот же движок можно будет использовать на нескольких сайтах, меняя только шаблоны, но весь код оставляя одинаковым. Что поможет, в частности, вносить обновления в движок и исправлять ошибки на всех сайтах разом.
    • Разделение труда - сейчас обычно над отображением работают фронтендеры, то есть, когда бизнес-логика отделена от шаблонов, то любой фронт сможет с ней работать


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

    После этого есть варианты, которые отличаются в основном удобством работы с кодом шаблона.
    Править HTML код записанный в виде РНР строки - это САМЫЙ неудобный .

    Дальше идут всякие наколенные решения, типа
    бизнес-логика
    include header
    ?>
    хтмл конкретной страницы
    <?php include footer ?>

    или чуть более продвинутый, когда шаблоны хранятся отдельно и могут вкладывться друг в друга. Сначала пишем функцию,
    function render_template($filename, array $data = [])
    {
        ob_start();
        extract($data);
        require __DIR__ . '/' . $filename;
        return ob_get_clean();
    }

    а потом в коде страницы пишем
    бизнес-логика
    ...
    $page_html = render_template('page.tpl.php', [
        'data' => $data,
    ]);
    echo render_template('main.tpl.php', [
        'navigaton' => $nav_list,
        'title' => $title,
        'page' => $page_html,
    ];

    где сами шаблоны это
    ...
            <?php foreach ($navigation as $item): ?>
                <li>
                    <a href="<?= e($item['href']); ?>"><?= e($item['title']); ?></a>
                </li>
            <?php endforeach ?>
    Важно! Любой вывод в этих шаблонах должен экранироваться в обязательном порядке (кроме очевидных случаев, когда мы выводим результат рендера).

    Ну и наконец нормальные шаблонизаторы, из которых я горячо рекомендую Twig.
    Главное, что про него надо знать - даже самые зелёные нубы осваивают его без затруднений. И настоятельно рекомендую сразу перейти на него, после того как наиграетесь с решениями на коленке.
    Ответ написан
    9 комментариев
  • Как достать из строки слово на следующий строке?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    А может лучше не заниматься извращением, а использовать библиотеки для парсинга html, например, bs4.
    Ответ написан
    2 комментария
  • Почему выдаёт ошибку 406?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    1. content-type: application/json;, так что
    r = requests.post("https://vto.pe/webapi/new/register", json={'email': email, 'password': pass1})

    2. Не все тело запроса передали, есть еще параметры
    Ответ написан
    Комментировать
  • Как исправить RuntimeWarning: coroutine was never awaited?

    Просто так асинхронный код в синхронном работать не будет.
    Плюс минус о чем и говорит ошибка, что задачу поставили, но никогда не запускали - примерный вольная трактовка
    Что бы подружить надо использовать asyncqt
    ну и в целом не плохо было бы основы по питону для начала подтянуть, прежде чем писать асинхронные программы

    print, request - синхронные в вашем коде нуль смысла асихронности
    перехватывать все исключения тоже не надо, может быть много побочек
    Ответ написан
    3 комментария
  • Как не получать блокировку от Гугл?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Ясно же, не долбить запросами гугл, отправлять запросы через рандомное время и с разных ip с разными настройками. А как иначе-то? Неужели вы полагаете, что против гугля есть специальный простой и надёжный приемчик, а гугль такой «ну ладно, это же тот самый приёмчик…»
    Ответ написан
    4 комментария
  • Стоит ли искать ошибки при изучении языка?

    sptm
    @sptm
    software developer / DevOps engineer
    Как по мне, копипастить код в процессе обучения категорически не стоит — ведь, совершая и исправляя ошибки, вы учитесь гораздо эффективнее. Да и вникать в код получается лучше, если его вручную набирать.
    Ответ написан
    Комментировать