Задать вопрос
  • При парсинге получаю не html код, а какой-то скрипт, из-за этого не могу разпарсить, Что делать?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Сайт написан с использованием одного из JS-фреймворков.
    Если вкратце проблема парсинга таких сайтов в том, что в ответ на запрос передается не готовый html, "собранный" на сервере а код на JS, который в итоге и отрисовывает html на стороне клиента.
    Поскольку в requests/BS, в отличии от бразуера, нет среды выполнения js, то и приходит голый js.
    Единственный вариант - переехать на selenium
    Ответ написан
    Комментировать
  • Ребята, как сделать список лидеров по количеству монет?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Преобразовать json в питоновские структуры данных.
    Дальше зависит от структуры.
    Если это список словарей, используйте sotred, передавая в аргумент key ключ словаря. по которому нужно сортировать
    Ответ написан
  • Как написать api для aiogram бота для общения с сервером flask?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Что вы подразумеваете под апи? Подробнее опишите задачу, как работает бот, что делает ваш фласк-сервер?
    не могу отправить сообщение боту из flask .

    А зачем отравлять сообщение из flask боту?
    Api это просто набор открытых (или не очень) url-адресов на которые можно слать http-запросы. Сам по себе сервер ничего слать не должен, он просто получает и отдает данные по запросу.
    Без контекста описать сложно, но в вакууме это выглядит так:
    Пользователь использует команду -> бот на aiogram реагирует на нее, получает какие-то данные -> обрабатывает их если нужно -> формирует json (или другую структуру данных, например xml) -> посылает эти данные фласку -> фласк принимает их -> обрабатывает данные -> выдает ответ -> бот как-то работает ним.
    Ответ написан
  • Как составить условие на вывод блока в определенные дни на php?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Получаете дату -> проверяете -> обрабатываете значения.
    Однако учитывайте, что c данный подходом можно узнать только серверное время работать по нему. Юзер же может быть где угодно, хоть в другом полушарии, где совершенно другое время. Если нужно учитывать именно пользовательское время получайте дату-время через js и шлите на сервер/показывайте через него-же.
    (однако этот подход куда более уязвим к "взлому", т.к. пользователь спокойно может поменять время у себя на пк. Не сильно - ибо при больших отклонениях сайты с ssl, если не ошибаюсь, блокируют доступ)
    Ответ написан
    Комментировать
  • Как перевести код с Pascal на Python?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Как перевести код с Pascal на Python?

    Используя синтаксис и встроенные функции (смотреть в офф.доках / "шпаргалке") написать соответствующий код.

    ---
    Допускаю, что найдется кто-то, готовый за вас делать ваши задания, и напишет код, но в текущем виде, поскольку вы не привели попыток решения, вопрос фактически является заданием. А про задания четко написано в п.5.12 правил.
    upd:
    Самые очевидные ошибки
    from math import sqrt
    
    for i in range(289123456, 389123456+1):
        sqrtIT = sqrt(i)
        numDel = 0
        if (round(sqrtIT)) == sqrtIT:
            maxDel = 1
            for j in range(1, round(sqrtIT)): # Раз ошибка
                """
                    Собственно, первый цикл 'for i := 289123456 to 389123456 do begin' вы переделали правильно, почему второй так сделали - непонятно
                """
                round(sqrtIT)
                if (i % j == 0):
                    if maxDel == 1 and j != 1: # вторая ошибка. В питоне - не равно пишется так: !=
                        maxDel = i // j # Еще одна ошибка (из коментов)
                    if (j != round(sqrtIT)): # третья ошибка
                        numDel += 2
                    if j * j == i:
                        numDel += 1
            if numDel == 5:
                print(i, ' ', maxDel)
    Ответ написан
    2 комментария
  • Как правильно вызвать функцию?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    1. Зачем тут цикл? Return всегда завершает выполнение функции/метода. Т.е. после первой итерации цикл гарантированно прервется. Если вы так проверяете наличие элементов в списке, то стоить как минимум на if.
    2.Что значит подключить ?
    Нужную функцию можно вызвать внутри другой функции и работать напрямую с возвращаемым значением или с переменной, в которую предварительно передается это значение.
    Можно передать значение в качестве аргумента.
    Ответ написан
    2 комментария
  • Ошибка синтаксиса, как исправить?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Может, для разнообразия вы будете читать текст ошибки?
    if player1 == 0:                 #ошибка синтаксиса в этой строке
    IndentationError: expected an indented block after 'while' statement on line 61

    Тут три варианта:
    Вы не в состоянии прочитать/осмыслить ошибку
    Вы не в состоянии перевести ошибку (даже имея под рукой интернет с кучей переводчиков)
    Вам лень систематически изучать даже основы языка, в которых сказано, что python отсупозависимый.
    Для первых двух пунктов, увы, решения нет. Для третьего - взять волю в кулак и не просто тыкайся, в надежде найти полезный кусок знания, а найти нормальный источник (Например книга Марка Лутца) и учится по нему
    Ответ написан
    Комментировать
  • Как правильно создать модели Django для чеков?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Обычно минимально-рабочая схема следующая:
    Товар: описание конкретного товара (цена, характеристики и прочее)
    Заказ: Описание заказа как такового - дата-время/покупатель/статус/возможно - общая цена.
    Список товаров в заказе: в минимальном наборе - внешние ключи к товару/заказу и количество.

    "Корзина" может быть реализована 2-мя путями (минимум):
    Прямо в таблице заказов. При этом такой заказ будет помечен статусом по типу "оформляется" и будет ограничение "1 юзер (кассир?) - 1 оформляющийся заказ"
    С помощью сессии
    Ответ написан
    2 комментария
  • Можете помочь с Telegram ботом?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Где-то лишний/пропущенный отступ, либо где-то затесался таб, вместо пробела (или наоборот).
    Т.к. полный текст ошибки вы не привели - ищите нужную строку сами.
    Ну и да - подобный подход - неверен.

    try:
       ...
    except Exception as e:

    Чисто с точки зрения синтаксиса все ок, но "хорошим тоном" - является использование не общего исключения, а максимально конкретного, а базовое использовать "по остаточному принципу" (сперва конкретные, потом, если возможны какие-то другие, но специфической обработки не нужно - базовое)
    try:
       ...
    except (SomeException, SomeOtherException):
        print('Обрабатываем какое-то исключение и еще какое-то исключение одинаково')
    except SomeThridException:
        print('Обрабатываем какое-то третье исключение')
    except Exception as e:
        print('Обрабатываем все остальные ')
    Ответ написан
    Комментировать
  • Как сделать 2 условия в sqllite python?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Это нужно делать на уровне sql запросов. Как? Для начала - просто изучите sql. То, что вам надо - буквально основы, описанные в первых разделах. Без их знания будет очень сложно.
    Ответ написан
    2 комментария
  • Как сделать таймер на бд sqlite3?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Как сделать таймер на бд sqlite3?

    sqlite3, как и любая другая база данных, просто хранилище данных. Как уже сказали в комментариях - реализовывать нужно средствами языка.
    Самый простой и наименее затратный с точки зрения ресурсов, вариант - высчитывать добытый уголь при проверке баланса.
    В общих чертах схема следующая:
    юзер "покупает шахту" (т.е. начинает игру), в базу записывается дата и время.
    При вводе соответствующей команды (например /склад) из базы берется время последнего обращения (для только-что начавших - пусть это будет время "покупки") и сравнивается с текущим. На основе количества пройдённых часов увеличивается баланс.
    При этом актуализировать баланс нужно будет не только при "проверке" пользователем но и как минимум при расходных операциях, учитывайте это.

    Второй вариант - используйте модули shelude / aioschedule (для синхронных/асинхронных ботов, соответственно). для ежечасного обновления. Однако учитывайте, что это потребует большего количества ресурсов.
    Ответ написан
    1 комментарий
  • Пишу бота для телеграм (telebot), проблема с асинхронными функциями. В чем причина ошибки?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Если вы дадите какие-то совесть по оформлению или синтаксу кода, я буду вам нереально благодарен.

    Мне вот интересно, вы ищите "советы" по каким-то вещам... Почему вам даже не приходит в голову поискать в офф.документации?
    Как правильно писать то, что вы пытаетесь сделать там описано.
    я тот же sqlite выучил за 1 день

    Не очень похоже. То, что вы посмотрели, уж извините, говноролик* по типу "хреначим бота из палок и ..." не значит, что вы изучили что-то.
    Конкретно - проблема в подобных выражениях:
    cursor.execute(f"INSERT INTO {table}({columns}) VALUES ({values})")

    Писать что-то подобное, тем-более в системе, с которая будет доступна другим людям в интернете можно только в случаях, когда вы целенаправленно хотите словить sql-инъекцию.
    Изучайте основы по документации. По крайней мере какие-то базовые вещи там описаны максимально подробно и даже если вдруг не знаете английский - примеров столько, что даже без чтения понятно.
    --
    * - тут больше вопрос к автору сего творения, который мало-того, что сам не пойми как учится, так еще и путает других.
    Ответ написан
    1 комментарий
  • Какие есть аналоги Mysql, без запуска отдельного сервера под него?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Ответ написан
    Комментировать
  • Как выводить ошибку если в тексте больше 3 слов?

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

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Проблема в порядке определения полей/ограничений - sql требует строгого порядка:
    1. определение полей
    2. определение ограничений (опционально)
    3. определение внешних ключей

    Т.е. сперва описываете все поля и только после - указываете блоки FOREIGN KEY
    Ответ написан
    1 комментарий
  • Счетчик количества людей?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    • С помощью значений в базе данных.
    • С помощью сторонних метрик (например от яндекса).
    Ответ написан
  • Почему при попытке прочитать json файл выдается исключение (python)?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    У вас, скорее всего, JSON неправильный. По идее - там что-то вида:
    {
     ...
    },
    {
     ...
    }

    Т.е. просто несколько объектов, разделенных запятой (или вообще без них)
    В то время как правильный json должен состоять либо из одного объекта, либо из списка объектов:
    [
      {
       ...
      },
      {
       ...
      }
    ]

    Возможно - поможет добавление квадратных скобок, но без примеров (копировать сюда всю портянку (если там больше 20-30 строк) не советую. 2-3 объекта с сохранением структуры будет достаточно) большего посоветовать не получится
    Ответ написан
  • Как узнать загрузилась ли страница PHP?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Бекэнд в целом и PHP в частности не знает и не может знать, что происходит у клиента в браузере. Он просто "лежит" на сервере и по требованию отдает данные.
    Отлавливать события в браузере, в т.ч. и загрузку, может JS. Смотрите в его сторону
    Ответ написан
    3 комментария
  • Как можно преобразовать такую строку в читаемые данные?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Выглядит как параметры url.
    В остальном - может помочь разделение:
    $pizza  = "name=222&email=444&message=ghjkghjk&agree=on";
    $pieces = explode("&", $pizza);
    print_r($pieces) // Array ( [0] => name=222 [1] => email=444 [2] => message=ghjkghjk [3] => agree=on )
    Ответ написан
  • Как лучше сделать бота в телеграме?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    От моего сервера запрос идет... эээ, либо боту на мой сервер, либо на api.telegram.org?

    Не работал с TG-ботами, но знаю, что их можно писать с использованием Flask, который в свою очередь является веб-фреймворком, написанном на python. Следовательно "сигналы" из игры можно реализовать путем отправки http-запросов на flask.
    Вот пример на хабре.
    По поводу вопросов:
    1.В целом - +/- вменяемая.
    2.Да, по идее - циклом.
    3.Маловероятно. Все-таки ТГ довольно популярный мессенджер и 100 пользователей это ни о чем.
    4.В общем случае - оптимальным вариантом будет аренда VDS. Телеграмм сервера не предоставляет, насколько я знаю. По поводу Local Bot API не знаю.
    5.Оптимальный вариант - сохранять их в базу данных. Id`шники пользователей получаются сразу-же при первом взаимодействии с ботом. Как получить id групп не знаю. Возможно есть событие вроде on_join, которое срабатывает при приглашении бота. Не уверен, что оно есть - смотрите в доках. Если его не будет, нужно заставить реагировать на пользовательскую команду.
    upd: Да, как написали в коментах - единый канал будет в разы проще с точки зрения реализации.
    Ответ написан
    Комментировать