Задать вопрос
Ответы пользователя по тегу Python
  • Как исправить ошибку в программе на python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    А вы пробовали читать текст ошибки?
    Вот смотрите, тут указано в какой строке и конкретно где в этой строке ошибка. А ниже написано в чем заключается ошибка.
    File "C:\Users\Никита\Documents\#программа для расчёта оценок.py", line 50, in
    a = ProgrammForTest()
    ^^^^^^^^^^^^^^^^^
    TypeError: ProgrammForTest.__init__() missing 4 required positional arguments: 'a', 'b', 'c', and 'ball'

    Вот вонкретное пояснение: "missing 4 required positional arguments: 'a', 'b', 'c', and 'ball'"

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

    О каком ООП речь, если вы основных концепий еще не освоили?
    Просто доверьтесь хорошей книге. пусть, например это будет Луц. Но не перескакивайте главы, выполняйте упражнения и всё у вас получится.
    Сейчас же, даже если закрыть глаха на ошибки, вы написали полнейшую чушь. Бессмысленную и беспощадную.
    Ответ написан
  • С помощью чего сделать конфиг файл?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    В питоне есть стандартный модуль под названием configparser.
    По нему всё хорошо расписано с примерами в документации.
    Вместо того, чтобы городить какие-то городушки с датаклассами. можно просто прочитать все необходимые параметры из обычного конфигурационного файла.
    Вот есть статья на Хабре с вариантами на любой вкус: https://habr.com/ru/articles/485236/
    Ищется за три секунды, не понимаю почему вы не поискали прежде чем спрашивать.
    Ответ написан
    Комментировать
  • Проблемы с подключением двух разных ПК. Как сделать правильно?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Это внешний IP ертелекома в екатеринбурге. Автор вопроса, похоже, за NAT и пытается по внешнему ip вот так сокетом пробиться через nat.
    Так не получится. Ну или у него белый адрес, но роутер не пробрасывает внешние коннекты на его комп.
    В общем, автору следовало бы указать сетевой адрес локального интерфейса при подключении.
    ipconfig что показывает? (ifconfig для линукс)
    Ответ написан
    5 комментариев
  • Как объединить файл python и презентацию pptx?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Не получится.
    Всегда будет много простых возможностей умыкнуть контент презентации так или иначе.
    Приделывая сбоку скрипт на любом языке - это то же самое, что "молдавский вирус", который просит пользователя удалить все файлы на компьютере самостоятельно.

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

    Огромное количество курсов и практикумов вынуждены тратить немасштабируемые человеческие ресурсы на живые лекции и трансляции, чтобы снизить скорость утечки материалов и понизить стоимость утёкших материалов без пояснений и инетрактива со стороны препода\лектора\организаторов.
    Если кому-то бдет полезен контент вашей презентации, то он будет похищен мгновенно, а все ваши кустарные способы их защитить будут практически бесполезны и дороги. Вполне вероятно. что они окажутся многократно дороже в реализации, чем защиаемый контент. Это ы ничего с учетом возможного фактора масштабирования, но ввиду практически полной бесполезности такой защиты...
    Ответ написан
    Комментировать
  • Как ускорить метод users.get?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вся проблема у вас из-за того, что вы тут делаете много http-запросов к API. Это в любом случае будет не быстро.
    Вам нужно изучить API на предмет bulk-запросов, когда вы извлекаете сразу много записей одним http-запросом к API.
    На сколько я понимаю, друзей может быть очень много, а вы идёте в глубину на два яруса, что имеет квадратичную сложность. То есть если у всех в среднем 10 друзей, то вы сделаете по десять запросов на каждого из десяти дррузей, что очень долго - 100 запросов!

    Для начала вы можете кэшировать полученные от API данные, чтобы повторно не получать одни и те же, если есть общие друзья. Нужно найти bulk-методы в API и правильно их использовать (если они есть).

    Ещё можно построить работу с такими операциями на асинхронных механизмах, воркерах и тасках. Долгие запросы с кэшированием должны делать специальные воркеры - отдельные процессы, которым скидываются задания через очередь. По факту выполнения ими возвращаются результаты, или кладутся в локальную БД. Это позволит не блокировать основной поток выполнения программы на такие долгие операции.
    Ответ написан
  • Как можно решить эту задачу?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Этот ресурс не предназначен для того, чтобы решать задачи за вас.
    Судя по вашему описанию задачи вам такое рановато. Тем более без глубокого понимания питона лезть в задачу смысла нет.
    Скорее всего задача с какого-нибудь пентестерского челленджа.
    Могу дать несколько подсказок, как подступиться, но, повторюсь, вам эти подсказки скорее всего не помогут.

    В первой части кода где вычисляется x цикл собирает имена файлов в локальной файловой системе компьютера, на котором выполняется код. Видимо на той машине, на которую предназначалась атака в ФС есть каталог /neroot какими-то данными.

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

    Чтобы распутать этот клубок надо разить код на части (этапы) и анализировать их отдельно подавая на вход правдоподобные данные.

    Там альше видно код. который вычитывает содержимое файлов каталога /neroot и складывает это содержимое в словарь.
    Весь вот этот запутанный код со здвигами призван зашифровать адрес сайта, куда отправляется json с данными из тех файлов.
    Вот этот код расшифровки вы можете выковырять и запустить отдельно, чтобы расшифровать.
    Но без знания языка у вас не получится.
    Ответ написан
    Комментировать
  • Почему методы выводят None?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Прочитайте документацию по этим методам. Именно в документацию нужно идти прежде чем задавать вопросы на подобных ресурсах.
    Вас удивляет, что эти методы не годятся для "чейнинга", поскольку не возвращают нистанс своего объекта? Думаю не это.
    Эти методы модифицируют объект на месте (inplace), а не возвращают новый. После вызова метода сортировки список стал отсортированным. А одноименная функция формирует новый список, куда в отсортированном порядке копирует содержимое оригинального
    Ответ написан
    1 комментарий
  • Как проверить запущен ли сервер или нет по его IP адресу на Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Обычно доступность и работоспособность сервера проверяют подключаясь к нему и делая тестовый запрос. В некоторых API для этого есть спецальные точки входа, которые диагностируют и вовзвращают статус работоспособности сервера. Если это веб-сервер, то нужно лишь сделать get-запрос к такому методу. Если это ваш сервер, то вы можете сами реализовать такой метод, если чужой и у него нет такого метода, то можете проверять факт наличия сервера по возможнсти подключиться к порту, на котором он поднят.
    Сделать это можно и без вского питона из командой строки, например с помощью
    telnet <ip> <port>.
    Выдаст ошибку, если подключение не удалось. Как подключиться к порту из питона вам уже показали в соседнем ответе, но, думаю, если поискать, то найдётся пачка готовых библиотек для того же самого.
    Ответ написан
    Комментировать
  • Бесплатный python хостинг?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Использование для своих корыстных не учебных целей сервисы вроде https://replit.com/ - это своего рода пробежка по граблям и нецелевое недобросовестное использование хорошего сервиса. Даже не буду вам рассказывать способы, которыми можно эксплуатировать уязвимости таких сервисов и преодолевать их ограничения. Считаю это неэтичным. Да и полно таких инструкций в сети, ищите сами, если хотите.

    Но я почитал ваши комментарии к другому ответу и вот что я вам скажу. Если ваш код работает на домашнем компе, а не работает на хостинге, это скорее всего проблема именно вашего кода и очень маловероятно, что это как-то связано с ограничениями хостинга.

    Часто код бывает не правильно написано в плане кроссплатформенности, использует какие-то глобально установленные библиотеки, которые вы забвли поставить на хочтинге, неправильно работает с кодировками или файловой системой.

    Для таких задач как ваша надо брать VDS. Подойдёт самая дешевая баксов за 5. А ещё у таких VDS есть бесплатный пробный период. Обычно это сутки, но я сталкивался и с недельными интервалами. Вот поищите https://poiskvps.ru/
    Там они не бесплантые, но есть тарифы с бесплатными пробными периодами. Однако, повторюсь, скорее всего не хостинг плохой, а ваш код косой.
    Ответ написан
    Комментировать
  • Как отсортировать многоуровневый словарь с помощью sorted()?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    # j = {...}
    {
      k: {
         **v, 
         'protocols': {
           kk:vv
           for kk, vv in 
           sorted(
             v['protocols'].items(),
             key=lambda kv2: kv2[1],
             reverse=True
           )
         }
      } 
      for k, v in 
      sorted(
        j['10.10.100.100'].items(), 
        key=lambda kv: kv[1]['count'], 
        reverse=True
      )
    }

    Но вы лучше не делайте таким нечитабельным однострочником. Соберите заново нужные словари в обычных классических циклах, иначе такой код нельзя будет поддерживать норамльно.
    Тут смысл в том, что у sorted есть необязательный аргумент, куда можно передать функцию извлечения ключа сортировки. Перебираете сортируемые словари парами (ключ-значение) в нужном порядке и собираете в новые словари.
    Ответ написан
    Комментировать
  • Как сделать выбор папки в скрипте?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    from tkinter import filedialog
    from tkinter import *
    root = Tk()
    root.withdraw()
    folder_selected = filedialog.askdirectory()
    Ответ написан
    Комментировать
  • По какой причине не работает метод fethmany в данном примере?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Потому, что нет такого метода. fetch же
    Ответ написан
    Комментировать
  • Почему цикл if внутри цикла for который находится в цикле while не работает?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    С чего вы взяли что у вас там что-то не работает?
    Во-первых:
    Почему цикл if внутри цикла for который находится в цикле while не работает?

    if - это не цикл.
    Во-вторых, в ытам накосячили с отступами.
    В-третьих, в таком спагетти коде не мудрено наделать ошибок, а у вас еще и break встречается то и дело. Нарисуйте блок-схему вашего алгоритма, тогда станет понятнее. А сейчас этот код вообще не читаем, отчего просто бесполезен и должен быть удален и переписан заново.
    Попробуйте разбить весь этот код на функции. Функуии должны быть короткие, читабельные и "чистые" (то есть зависеть только от аргументов, а не от внешних и глобальных факторов)
    Ответ написан
    8 комментариев
  • Какой есть легкий IDE для Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Смотрите в сторону VSCode. Он сильно легче по требуемым ресурсам, чем PyCharm,
    Еесть ещё встроенный Idle, но я бы не называл это громким словом IDE, хотя формально оно им является.
    Ответ написан
    Комментировать
  • Как выключить вывод на экран запросов к fastAPI серверу в python?

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

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

    Тангенс. Прочитайте что такое тангенс.
    Ответ написан
    2 комментария
  • Как сделать так чтобы стейт отвечающий за регистрацию не зацикливался?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Во-первых, у вас второй обработчик состояния имеет то же имя, что и первый:
    @bot.on.message(state=SuperStates.CONFIDENT_STATE)  # StateRule(SuperStates.AWKWARD_STATE)
    async def awkward_handler(message: Message):

    Во-вторых, у вас код останавливается на этом состсоянии. Сделайте еще одно и переходите в него, там можете реагировать и на другие команды.
    Ответ написан
    Комментировать
  • Почему метод get не работает в цикле?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вы предлагаете нам гадать тут на кофейной гуще?
    Никаких входных данных, по которым можно было бы судить о причине неработоспособности вашего кода вы не предоставили.
    Я могу перечислять возможные причины вечно!
    - может быть в index.html мало или нет данных
    - возможно вы неправильно ищете элементы в html
    - некорректно сформирована ссылка с пагинацией (кстати. почему не пользуетесь параметрами, а лепите в урл?)
    - сайт имеет защиту от скачивания тпым перебором чисел, может быть ему нужен еще какой-то формальный параметр
    - вы не находите куда сохраняется результирующие файлы из-за непонимания что такое текущий каталог
    - вы не дожидаетесь ваших 10 секундных таймаутов
    - вы не в тот каталог смотрите в поисках результатов
    - как-то не так запускаете и не видите ошибок, например с доступом.

    С учетом того, что вы даже сюда скопировали код как-то косо и косо подменили куски строк в коде на плейсхолдеры, может быть что угодно из перечисленного
    Ответ написан
    Комментировать
  • Как сохранить объект с кирилицей в файл формата JSON на Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Спорим у вас винда?
    Прочитайте спецификацию функции open. В частности про параметр encoding.
    Когда записываете текст в виде байтов (а в файлах он именно так хранится), то нужно понимать какой кодировкой вы кодируете не ascii-символы.
    Вы явно не указываете кодировку, поэтому выбирается кодировка по умолчанию. Посмотреть что у вас там по умолчанию можно вот этой фунцией sys.getdefaultencoding()
    Именно в такой кодировке нужно открывать ваш файл на чтение, чтобы увидеть там русские буквы.
    В винде у вас скорее всего одна из двух кодировок там может быть. И она разная в зависимости от того в консоли вы запустили свою прогу, или в IDE. А ещё подстава - в винде по умолчанию однобайтовые кодировки, поэтому не все символы можно в них представить!
    С этим в линуксе гораpдо лучше. По умолчани везде utf-8.

    Вот, кстати, можете проверить что получится для понятности:
    > 'íåæèëîãî'.encode('latin1').decode('cp1251')
    'нежилого'
    Ответ написан
    1 комментарий
  • Почему не работает код?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Нет. не должен. Читайте что делает ваш код:
    if message.text == "А":  
            # сюда вы попадаете когда приходит сообщение. в тексте которого только "A"
            # Вы отправляете пользователю два текстовых сообщения:
            bot.send_message(message.chat.id, "Вы выбрали Зеленый")
            bot.send_message(message.chat.id, "Введите ставку в таком формате /stavka 123")
            # и тут же берёте строку, пришедшую в сообщении (а это буква "A", если вы забыли)
            # и пытаетесь заменить в этом однобуквенном тексте подстроку, которой там нет и не было:
            stavka = message.text.replace('/stavka', '').strip()
            # потом подвешиваете инерпретатор на 5 секунд:
            time.sleep(5)
            # и выводите букву "А" в терминал:
            print(stavka)

    Всё работает как написано.
    Ответ написан