Задать вопрос
  • Считывание программой файл, может кто знает решение?

    Vindicar
    @Vindicar
    RTFM!
    Опишите квадрат как структуру данных - обычный класс, датакласс, именованный кортеж, что угодно. Это позволит вам:
    1. убрать дублирование кода для двух квадратов, и устранить нужду в десятках переменных. У вас будет два экземпляра класса "квадрат", а данные квадратов будут скрыты внутри них.
    2. разделить описание квадрата + операции над ним и его отображение в интерфейсе. Два простых взаимодействующих класса - это обычно лучше чем один сложный.

    Также имейте ввиду, что часто лучше хранить необходимый минимум данных, и вычислять остальное. Это позволит избежать противоречий в данных - например, в вашем коде координаты вершин могут формировать произвольный четырёхугольник вместо квадрата. Если нужен именно квадрат, и именно не-повёрнутый, то я бы написал класс примерно так:
    class Square:
      #конструктор принимает координаты левой верхней вершины и длину стороны квадрата
      def __init__(self, x: int, y: int, a: int):
        self.topleft = (x,y) #давайте переменным более читаемые имена!
        self.side = a
      
      @property
      #это будет свойство - оно будет вычисляться по запросу, а не храниться
      def topright(self):
        return (self.topleft[0]+self.side, self.topleft[1])
      @property
      def bottomleft(self):
        return (self.topleft[0], self.topleft[1]+self.side)
      @property
      def bottomright(self):
        return (self.topleft[0]+self.side, self.topleft[1]+self.side)
      
      def save(self, file): #сохраняем себя в файл
        pass #код этого метода напишите сами
      
      @classmethod
      # это метод класса, он будет вызываться как Square.load(), а не для конкретного экземпляра Square
      def load(cls, file): #загружаем новый квадрат из файла
        x = ... #напишите код загрузки сами
        y = ...
        side = ...
        return cls(x, y, side)
    Ответ написан
  • Как сделать покупку валюты в боте Discord?

    Vindicar
    @Vindicar
    RTFM!
    Если API представляет все необходимые для этого операции, вы можете им воспользоваться и это не противоречит законодательству - то можно.
    Все три "если" - это вопросы, на которые нужно знать ответ.

    Предполагая что первое и третье предположения верны, техническая сторона дела проблем не составит.
    Ответ написан
    Комментировать
  • Декомпозиция временного ряда. Почему отображает много NaN в остатках?

    Vindicar
    @Vindicar
    RTFM!
    Я предполагаю, что функция использует метод скользящего окна, т.е. анализирует некоторое нечётное N точек данных, чтобы вычислить искомую величину в средней точке. Например, для N=7 у нас помимо текущей точки будет использоваться три точки до текущей и три после.
    Но для крайних точек это не подходит, так как у них нет достаточного количества соседей с той или с другой стороны.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы запускался только 1 интервал?

    Vindicar
    @Vindicar
    RTFM!
    Перемести interval из локальной переменной функции куда-то, где он будет храниться долго.
    Например, в глоабльную переменную, а лучше в поле класса.
    Тогда ты сможешь проверить, если interval не является undefined, то таймер уже установлен.
    Ответ написан
    3 комментария
  • Почему программа требует перезагрузку после установки?

    Vindicar
    @Vindicar
    RTFM!
    Если вы дали установщику права админа для установки, то поздно пить боржоми, он уже сделал что хотел. Нужно было сразу прогнать на VirusTotal.

    Перезагрузка обычно требуется для установки служб/драйверов.
    Поскольку программа предназначена для записи экрана, по идее она может ставить драйвер-фильтр, чтобы перехватывать выводимые на экран изображения. Либо, альтернативно, чтобы создать "виртуальную вебкамеру", которая отображает захватываемый контент.
    Ответ написан
    1 комментарий
  • Как заблокировать человека в боте?

    Vindicar
    @Vindicar
    RTFM!
    Храни список (в файле, а лучше в базе данных) ID заблокированных, при поступлении команды проверяй что ID отправителя сообщения нет в списке.

    Опциональные фишки типа хранения причины бана или даты, когда истекает бан, по желанию.
    Ответ написан
    Комментировать
  • Что делать при ошибки Non-UTF-8 code starting with?

    Vindicar
    @Vindicar
    RTFM!
    Вообще эта ошибка обычно возникает не из-за переводов строки. В начале файла кодировка указана?
    Если нет, то добавь в начало файла строчку
    # -*- coding: encoding name -*-
    вместо encoding name подставь windows-1251 (если пользуешься старой тупорылой кодировкой) или utf-8, смотря в какой кодировке твой исходник.
    Ответ написан
    Комментировать
  • Как решить ValueError: The truth value...?

    Vindicar
    @Vindicar
    RTFM!
    numpy намекает, что выражение rgb != bg_color вернёт не логическое значение, а массив логических значений - результатов сравнения каждого элемента. Иными словами,
    print(numpy.array([1, 2, 3]) != numpy.array([1, 2, 4])) выведет [False, False, True]
    Как следствие, непонятно, считать ли такой массив истинным или ложным если в нём несколько значений и они разные.
    Предпреждение подсказывает и как это поправить.
    Если тебе нужно любое несовпадение, то пишешь (rgb != bg_color).any().
    Если нужно, чтобы все три канала цвета были разными, то (rgb != bg_color).all().

    Но если честно, cleared_img_data - какой-то странный массив.
    Ответ написан
    1 комментарий
  • Как исправить ошибку Python Tkinter?

    Vindicar
    @Vindicar
    RTFM!
    Дело в этом коде:
    data = result.split()
                fun_name = data[0]
                arg = data[1:]
                bank_fun[fun_name](arg)

    Вы разбиваете введённую строку по пробельным символам (в т.ч. табы и переводы строки), но не проверяете ни есть ли функция с таким именем, ни правильное ли количество параметров передано, ни правильно ли записаны числа. Т.е. если у вас более трёх пробельных частей в строке, то в arg попадёт более двух значений, а не все функции это позволяют.

    Кратковременное решение: добавьте отлов исключений и проверку корректности вводимого текста.

    Более долгое но правильное решение: не изобретайте велосипед, а освойте модуль argparse, чтобы удобно разбирать команды и контролировать их корректность. А для удобного разбора строки (в том числе фишек типа "завернуть строку с пробелами в кавычки чтобы считалась как один аргумент") используйте модуль shlex. Оба модуля в стандартной поставке питона.
    Ответ написан
    Комментировать
  • Как перехватить traceback из subprocess?

    Vindicar
    @Vindicar
    RTFM!
    Если я верно понял, что пробелма в синхронном вводе-выводе при общении с дочерним процессом, то я бы посмотрел в сторону asyncio, чтобы анализировать полученное содержимое stderr постепенно, по мере его появления. Может, оверкилл, но должно сработать.
    Вот примерная идея, найденная на stackoverflow.
    Ответ написан
    Комментировать
  • Как передать переменную из jQuery в POST?

    Vindicar
    @Vindicar
    RTFM!
    Можно сделать AJAX-запрос. Это не сильно сложнее, чем невидимая форма.

    Вот только причём тут Питон?
    Ответ написан
  • Подойдет ли raspberry pi для программирования на python?

    Vindicar
    @Vindicar
    RTFM!
    С малинкой много возни с подключением периферии - сначала её надо подобрать, потом лапша из кабелей мешает.
    Я бы лучше посмотрел нетбук или low-end ноут. Просто удобнее.
    Ответ написан
    1 комментарий
  • Как заставить бота ждать ответа от пользователя?

    Vindicar
    @Vindicar
    RTFM!
    Если нужно обрабатывать последовательность сообщений, описывай автомат состояний.
    Каждое состояние - это ситуация, когда бот ожидает некий набор возможных ответов.
    Каждый ответ - это переход из состояния в состояние.
    При обработке сообщения смотришь, какие переходы есть в текущем состоянии, выбираешь наиболее подходящий и выполняешь его логику.
    Ответ написан
  • Определить, сколько решений имеет система ax + by = c, dx + ey = f?

    Vindicar
    @Vindicar
    RTFM!
    Представь систему как два графика прямых, и ищи их точку пересечения.
    • Если a/d = b/e = с/f, то решений бесконечно много, так как это по сути одно и то же уравнение (одна и та же прямая).
    • Если a/d = b/e != с/f, то решений нет, так как это уравнения параллельных прямых.
    • В противном случае есть ровно одно решение, так как у непарарллельных прямых есть одна точка пересечения.


    Чтобы решить проблему с коэффициентами, равными 0, перестрой пропорцию с деления на умножение.
    a/d = b/e = с/f => ae = bd и af = cd
    a/d = b/e != с/f => ae = bd и af != cd
    Ответ написан
    Комментировать
  • Как перехватывается HTTP трафик в рамках web-сайтов?

    Vindicar
    @Vindicar
    RTFM!
    Влезть злоумышленник может, если он может вклиниться физически или логически в ваше сетевое соединение.

    Со стороны провайдеров - это DPI (deep packet inspection), который занимается анализом пакетов и может делать разное, от блокировки страницы до вклинивания баннеров.
    Со стороны злоумышленников - это атаки вроде "бесплатный вайфай тут" (поднимаем точку доступа, сниффаем трафик через неё).
    Также есть логические варианты - т.е. так или иначе заставить жертву использовать прокси злоумышленника. От атак на существующие сети (например ARP Poisoning), через взлом и перешивку домашних роутеров, и до социалочки вроде "от хакеров можно защититься одним кликом, достаточно только..."
    Ответ написан
    Комментировать
  • Как вызвать из класса другого файла функцию?

    Vindicar
    @Vindicar
    RTFM!
    Нужно пересмотреть структуру вашего кода. Она должна напоминать дерево.
    На вершине дерева - логика программы. Она импортирует в себя остальные модули (т.е. знает о них). Остальные модули в идеале не должны знать ни о логике, ни о других модулях равного им уровня, а быть полностью самостоятельными.
    Если же им нужно знать что-то о логике (например, читать значение или вызывать метод объекта логики при определённых условиях), то этот объект логика должна передать им самостоятельно, передав ссылку на него либо как параметр конструктора, либо позднее, отдельным методом.

    Конкретнее ничего сказать не могу, не зная вашей задачи и набора объектов.
    Ответ написан
    Комментировать
  • Как получить результат и вывести его в другом окне?

    Vindicar
    @Vindicar
    RTFM!
    self.results = self.cursor.fetchall()
    self.output.setText(self.results)

    Я очень сомневаюсь, что label сумеет переварить список строк в качестве содержимого.
    Ответ написан
    Комментировать
  • Как это работает?

    Vindicar
    @Vindicar
    RTFM!
    Вложенная функция _fib_dict() работает рекурсивно, и ссылается на переменную fib_d в содержащей её функции.
    Ответ написан
    Комментировать
  • Как отправить сообщение в цикле on_message в discord.py?

    Vindicar
    @Vindicar
    RTFM!
    Наверно, потому что ctx.author.send(), если нужно написать в приват автору. Или ctx.channel.send(), если сообщение пришло с сервера и нужно ответить там же.
    Ответ написан
    1 комментарий
  • Как в discord.py сделать функцию shutdown?

    Vindicar
    @Vindicar
    RTFM!
    Если речь об остановке программы, то гипотетически может пригодиться модуль atexit.
    Но нужно иметь ввиду, что этот модуль не поможет если процесс убит сигналом KILL (Unix системы) или через TerminateProcess() (Windows системы).
    Кроме того, нет гарантий, что после вызова atexit-обработчика бот проживёт достаточно долго, чтобы на самом деле отправить сообщение по сети, а не только "принять к сведению и поставить в очередь".

    Так что скорее стоит задуматься, что именно вы пытаетесь сделать, и зачем.
    Ответ написан
    Комментировать