• Как отловить аргумент метода через __init__?

    @fireSparrow
    Отлов переменных, переданных как аргумент метода правильнее всего сделать в самом методе.
    Тут никакой особенной магии не нужно.

    А чтобы регулировать доступ к аттрибутам класса, смотрите в сторону магических методов __setattr__ и __getattribute__

    Подробнее про них можно почитать здесь:
    https://habrahabr.ru/post/186608/#access
    По этой же ссылке и про другие магические методы много полезного написано.
    Ответ написан
    Комментировать
  • Случайное добавление в список с проверкой на одинаковые элементы, как это правильно сделать?

    @fireSparrow
    Я правильно понимаю, что вам нужно из имеющегося списка взять случайное количество случайных слов?

    Тогда это можно сделать гораздо проще, без цикла:

    import random
    
    WORDS = ["kot", "maga", "lada", "sobaka"]
    
    rand_num = random.randint(1, len(WORDS))
    new_words = random.sample (WORDS, rand_num) 
    
    print(new_words)


    PS: И кстати, в питоне термин "словарь" имеет особый смысл. Не надо этим словом называть просто последовательность слов.
    Ответ написан
    2 комментария
  • Python: замена ключевого слова значениями из списка по порядку следования?

    @fireSparrow
    В строчке
    text = text.replace('Image', list, 1)

    Нужно добавить индекс - чтобы на каждом шаге подставлялся только элемент с этим индексом, а не весь список:

    text = text.replace('Image', list[i], 1)

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

    @fireSparrow
    string = ', '.join(good)
    Ответ написан
    Комментировать
  • Что почитать про геометрию в программировании?

    @fireSparrow
    Конкретно по первому вопросу:
    1. Перебираем все возможные тройки точек.
    2. Каждая тройка - это треугольник. Для него находим центр и радиус описанной окружности (конкретно для этой подзадачи алгоритм легко выгугливается).
    3. Проверяем - находятся ли все остальные точки внутри этого треугольника, и является ли эта окружность меньше, чем ранее найденные.

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

    @fireSparrow
    Потому что в первой строчке вы не создаёте три разных массива, а создаёте три ссылки на один и тот же пустой массив. Потом вы в этот (один и тот же!) массив последовательно добавляете 'a', 'b', 'c'.
    То есть, во второй, третьей и четвёртой строчках кода вы обращаетесь к одному и тому же массиву, просто каждый раз через другую ссылку на него.

    В пятой строчке вы затираете одну из этих ссылок, заменяя её на уже другой массив [d]. Но другие две ссылки остаются.

    Легко проверить, что эти две ссылки на один и тот же объект.
    Если вы допишете в конце программы:

    x[1].append('z')
    print(x)

    То получите:
    [['d'], ['a', 'b', 'c', 'z'], ['a', 'b', 'c', 'z']]

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

    @fireSparrow
    Трудно сказать что-то конкретное, не видя, как именно реализована изнутри структура, описывающая поле.

    Предположу, что у вас есть возможность для любой ячейки узнать все шесть её соседей. Если такой метод существует, дальше всё легко.

    Примечание: Я буду в ответе использовать термин "множество" в терминологии питона. Если у вас другой язык, воспользуйтесь аналогичной структурой из своего языка. Или используйте простой список, но перед добавлением в него элемента проверяйте, что такого элемента там нет. Иначе цикл никогда не завершится, а список будет разбухать, пока не съест всю память.

    Начинаете с одной любой ячейки.

    Создайте два пустых множества - назовём их 'currents' и 'visited'.
    В currents поместите ту ячейку, с который вы начинаете.

    Далее выполняете цикл, пока в currents есть хотя бы одна ячейка:
    1. Удалите из currents первую попавшуюся ячейку (далее её я называю "текущей ячейкой").
    2. Для этой текущей ячейки найдите всех её соседей.
    3. Для каждого соседа:
    3.1. Если он того же цвета, что и текущая, и не находится в множестве visited - добавьте его в currents
    3.2. Если он другого цвета - проведите границу между этим соседом и текущей ячейкой.
    4. Добавьте текущую ячейку в visited
    5. Повторять, пока currents не кончится.

    Граница нарисована!
    Ответ написан
    1 комментарий
  • Как реализовать логику подсчета стоимости в зависимости от количества единиц товара?

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

    @fireSparrow
    Для несложных интерфейсов стандартно используется tkinter - лёгкая и лаконичная библиотека, проста в освоении, в сети по ней много материалов (в том числе и на русском), и уже входит в стандартные библиотеки питона, то есть отдельно её ставить не нужно.

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

    @fireSparrow
    Если вы хотите, чтобы у вас именно открылось окно Ворда с файлом в нём, то посмотрите эту ссылку:
    Как запустить файл excel из python?
    Ответ написан
    Комментировать
  • Хорошая практика для Python?

    @fireSparrow
    Решайте задачи. Начинайте с простых, тщательно разбирайте те конкретные непонятки, которые всплывают по мере решения. Постепенно почувствуете в себе силы переходить к более сложным задачам.

    Зарегистрируйтесь на сайтах:
    checkio.org
    codingame.com
    codewars.com

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

    @fireSparrow
    from collections import Counter
    
    dct = {
            u'DC963983-0B06-47D4-8E09-9D12C98FEEE4': 3,
            u'DC963983-0B06-47D4-8E09-9D12C98FEEE4': 3,
            u'D2AEE06F-B0BF-41E9-8646-93F7B852F357': 6
        }
    
    values = dct.values()
    counter = Counter(values)
    
    print(dict(counter))


    UPD: Кстати, в вашем словаре из примера первый ключ повторяется дважды. Так делать нельзя, в словаре все ключи должны быть уникальны - иначе питон просто перезапишет первое значение вторым, и в словаре вместо этих двух элементов останется один. Поэтому для вашего примера мой скрипт выведет не то решение, которого вы ожидаете.
    На корректном словаре с уникальными ключами мой скрипт будет работать правильно.

    Если вам нужно, чтобы можно было использовать одинаковые ключи для разных элементов, то вам стоит использовать не словарь, а другую структуру данных. Например, список кортежей.
    Ответ написан
    4 комментария
  • Не выводит range в Python, как исправить?

    @fireSparrow
    Добавьте print в последнюю строчку:

    print(list(range(start,finish+1,interval)))

    Выражение без print выводит своё значение только в интерактивном режиме.
    Вне интерактивного режима значение нужно в явном виде выводить с помощью print.
    Ответ написан
    1 комментарий
  • Есть ли онлайн-сервис который нарисует блок схему по заданному тексту (не код)?

    @fireSparrow
    Вряд ли.
    Смысловой разбор произвольного текста - крайне неординарная задача. Для общего случая она пока не решена. Да и частные случаи, для которых она решена - весьма ограниченные и куцые.
    Гораздо проще научить человека писать понятный компьютеру код, чем научить компьютер разбирать понятный человеку текст.

    Лучше потратьте час, посмотрите как реализованы другие блок-схемы, и разберитесь, как нарисовать свою.
    Ответ написан
    Комментировать
  • Как лучше смоделировать таблицу двумерным списком?

    @fireSparrow
    Как уже сказали другие комментаторы, чаще всё-таки нужно производить операции над строками (добавление, удаление, выборка по фильтру).
    Если вы ожидаете, что вам этого не нужно будет, зато нужны будут операции со столбцами, вы можете использовать тот подход, который вам кажется более удачным именно для вашего случая.

    Но, имхо, самым лучшим будет просто написать свой класс, который будет предоставлять удобные интерфейсы для работы как со строками, так и со столбцами.

    Например, можно сделать так, чтобы в этом классе table.rows[0] отображало первую строчку, а table.cols[0] - первый столбец. Плюс, дополнительно прикрутить выборку по строкам и колонкам.
    Например, вот так table.select_cols(1,5)

    Тут уже всё зависит от вашей фантазии, вы можете реализовать столько удобных интерфейсов, сколько сможете вообразить. И для вас (или другого пользователя этого класса) вообще не будет никакой разницы, как там организованна внутренняя структура данных, потому что работать вы будете только с удобными интерфейсами, которые вы напишете именно под ваши задачи.
    Ответ написан
    Комментировать
  • Как создать словарь паролей?

    @fireSparrow
    Зачем создавать? Вбейте в поисковик "самые распространённые пароли" и найдёте уже готовый список.

    А программно его генерировать - это нонсенс. Вы никогда не угадаете все алгоритмы, по которым работает голова пользователя, когда он придумывает пароль. Пытаться это всё алгоритмизировать - это что-то из области сильного ИИ.
    Ответ написан
    Комментировать
  • Как правильно хранить переменные в python?

    @fireSparrow
    1. Если файл конфига лежит там же, где и основной скрипт, то по степени безопасности нет принципиальной разницы в каком из этих файлов вы будете хранить логины-пароли.

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

    @fireSparrow
    Итерация по файлу отличается от итерации по списку.
    При использовании в цикле списка, готового объекта-итератора нет, и для списка интерпретатор создаёт объект-итератор.
    Но файловый объект - сам себе итератор, поэтому интерпретатор использует для итерирования уже существующий итератор, а не создаёт новый. Поэтому, если итератор файлового объекта исчерпается после прохода по нему, то к следующему витку он так и останется исчерпанным.
    Ответ написан
    1 комментарий
  • Как задать переменной константу?

    @fireSparrow
    В том коде, который вы привели, нужно после каждого вызова переменной добавить приращение на единицу:

    value += 1

    Либо есть более сложный путь - написать специальный класс, который будет перехватывать любой вызов определённого атрибута, возвращать значение соответствующей переменной, и сам же прирастит её на единицу.

    Или ещё можно взять итератор count из стандартной библиотеки itertools, и обращаться к нему через next().

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

    @fireSparrow
    Не надо длинну полоски задавать через css - оно совсем не для этого предназначено.

    Просто через js ставьте свойство .style.width полоски такое, как вам нужно.
    Ответ написан
    Комментировать