Ответы пользователя по тегу Python
  • Почему не работает(ничего не выводит) эта программа?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Давайте включим логику:
    name = '' # ПУСТАЯ строка
    ...
    bot.polling() # бесконечный цикл
    print(name) # Функция печати ПУСТОЙ строки

    Если под "выводом" вы имели ввиду печать, то я привел как минимум две причины, по которой этого не будет.
    Ответ написан
    Комментировать
  • Как решить проблему с 'sqlite3.Connection' object has no attribute 'user_exists'?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    db = sqlite3.connect('daatabase.db')
    Давайте думать логически. Вы создали "тупое" подключение к базе. И далее: db.user_exists(message.from_user.id) вы пытаетесь вызвать у этого подключения метод user_exists.
    Смотря на код в целом - понятно, что данный метод должен проверять наличие юзера в базе. Далее вопрос - откуда встроенная в python библиотека может знать о каких бы то ни было юзерах из внешней системы и сторонней библиотеки для работы с ней?
    Ответ написан
  • Ошибка sqlite3.IntegrityError: UNIQUE constraint failed: order_id.ID. Как исправить?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Если я не ошибаюсь, то ошибку можно исправить переписав код без использования F-строк, но давненько не работал с SQLite3 и не помню как это сделать.

    C помощью подстановочных значений. О том как это сделать - смотрите в документации там куча примеров.
    Что касательно ошибки - значение поля id не может повторяться, но вы пытаетесь добавить уже существующее значение. Чаще всего, и ваш случай не исключение, как я понял, уникальными делаю первичные ключи (они-же id`шники). В таких случаях их делают авто-иникрементируемыми и при добавлении данных данное поле пропускают, указывая только нужные поля (примеры тут в главе посвященной собственно insert).
    Ответ написан
    Комментировать
  • Какой бесплатный хостинг выбрать для бота?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Потенциально может Heroku, но:
    1.Не уверен, что туда можно поставить ffmpeg (четырехлетний топик на SO, впрочем, утверждает, что можно)
    2.Довольно "тупой" (как минимум сайты на бесплатном тарифе уходят в сон через 30 минут бездействия и "просыпаются" довольно долго)
    3.По умолчанию доступно ~600 часов в месяц (остальное время приложение спит).
    4.Можно увеличить до 1000, привязав карту (оплачивать ничего не надо), но в связи с событиями, могут быть проблемы.
    5.Read-olny файловая система (создавать/изменять файлы после деплоя нельзя)
    А в остальном - советую взять пусть самый дешевый, но платный - избежите кучи мороки.
    Ответ написан
    2 комментария
  • Как правильно создать условие в функции?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Собственно, текст сообщение будет всегда будет строкой, даже если в нем будет просто цифра, поэтому стоит проверить, является ли все символы в нем - цифры
    Ответ написан
    Комментировать
  • При парсинге получаю не 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) -> посылает эти данные фласку -> фласк принимает их -> обрабатывает данные -> выдает ответ -> бот как-то работает ним.
    Ответ написан
  • Как перевести код с 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 отсупозависимый.
    Для первых двух пунктов, увы, решения нет. Для третьего - взять волю в кулак и не просто тыкайся, в надежде найти полезный кусок знания, а найти нормальный источник (Например книга Марка Лутца) и учится по нему
    Ответ написан
    Комментировать
  • Можете помочь с Telegram ботом?

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

    try:
       ...
    except Exception as e:

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

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

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

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

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

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

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

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Вас не смущает, что вы импортирует модуль и через строчку переопределяете данное имя?
    import keyboard
    from turtle import*
    keyboard = Turtle()

    Далее вы настраиваете вашу черепашку, обозначенную как "клавиатура". Странно, но ок.
    keyboard.color('blue')
    keyboard.shape('turtle')

    После чего в цикле вы ждете, как я понял, нажатия на единицу, при помощи метода wait() из модуля keyboard. Проблема в том, что у вас keyboard это Turtle()
    while True:
        keyboard.wait("1")
        keyboard.fd(30)
    exitonclick()
    Ответ написан
    Комментировать