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

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Это задача размена монет. Решается динамическим программированием. Вот статья на вики. Там даже код есть, похоже, на питоне. Правда, оно там только количество монет считает. Чтобы найти и сами монеты, вам надо завести еще один двумерный массив и везде, где считается массив m запоминать, а каким именно действием текущее значение набирается (или взять текущую монету, или пропустить). В конце вам надо будет от позиции m[-1][-1] циклом while выполнять записанные ранее действия (или пропустить текущую монету и уменьшить r на 1, или взять и тогда уменьшить r на ее размер).
    Ответ написан
    Комментировать
  • Как оформить SQL запрос к PostgreSQL и подставить туда значение переменных?

    @MaxKra1985
    разработчик java, python
    street_str должна содержать маску для поиска
    street_str="пример" - будет искать по равенству
    street_str="пример%" - будет искать начинающиеся с примера
    street_str="%пример" - будет искать заканчивающиеся примером
    street_str="%пример%" - будет искать пример в любом месте
    Ответ написан
    3 комментария
  • Почему не работает так, как надо?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Потому что литерал [] объявляет новый список, а оператор * копирует ссылку на тот же список.
    Ответ написан
    Комментировать
  • Как сократить условие python?

    bravebug
    @bravebug
    Любое выражение при использовании с условными операторами приводится к его булеву значению (True или False)
    Исходя только из того что:
    >>> bool(0)
    False
    >>> bool(not 0)
    True

    ваше выражение уже может быть сокращено до:
    if a and a_2 and b and b_2 and c and c_2 or a and a_2 and not b and not b_2 and c and c_2 or not a and not a_2 and b and b_2 and c and c_2

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

    @twistfire92
    Python backend developer
    если хотите условие "ни один не равен нулю", используйте
    all([a, b, c])
    где a, b, c - отличные от 0 значения (Если быть точнее, значения эквивалентные True)

    Также существует функция any(). Тоже принимает список значений и проверяет, чтобы хотя бы одно значение было эквивалентно True.

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

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

    Даже если у тебя будет супер ненадёжный носитель, который выходит из строя на следующий день с вероятностью 50%, но у тебя есть 100 резервных копий, то шанс смерти всех копий в один день будет около нуля.
    Ответ написан
    2 комментария
  • Unity как сделать сохранение?

    GavriKos
    @GavriKos Куратор тега Unity
    Почитать документацию по PlayerPrefs
    Ответ написан
    1 комментарий
  • Куда можно задеплоить телеграм бота с sqlite?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Бесплатно - никуда (кроме heroku).
    Платно - любой VDS.
    Касательно же heroku - там есть поддержка postgresql. При нормальной структуре кода переписать с sqlite на postgresql относительно просто.
    Ответ написан
    1 комментарий
  • Доступ к базе по ссылке?

    NeiroNx
    @NeiroNx
    Программист
    >>> from urllib.parse import urlparse
    >>> u = urlparse("postgres://admin:oocooSh7@postgres.host:5432/my_db")
    >>> u.password
    'oocooSh7'
    >>> u.username
    'admin'
    >>> u.hostname
    'postgres.host'
    >>> u.port
    5432
    >>> u.path
    '/my_db'
    >>> us = urlparse("sqlite:///C:/Users/admin/site_db.sqlite3")
    >>> us.path
    '/C:/Users/admin/site_db.sqlite3'
    >>> us.scheme
    'sqlite'
    >>>

    Думаю дальше сами справитесь.
    Ответ написан
    1 комментарий
  • Хэширование переменной с файлом в md5 (hashlib)?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Вам бы, перед тем как хешировать что-то, python подучить.
    readFile = input("введите полный путь к файлу чтения: ")
    ...
    hash_object = hashlib.md5(b"readFile")

    По-моему, о том, что конструктция вида "любой_текст" является только строкой и ничем еще(и уж точно не именем переменной) объясняют в первых уроках.
    Ответ написан
    Комментировать
  • Как отправить Embed сообщение?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Запятые между параметрами discord.Embed отсутствуют.
    Ответ написан
    5 комментариев
  • Как сделать нумерацию при выводе?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Вариант для не знающих синтаксис и не умеющих в гугление: цикл и счетчик.
    pythonic-вариант emumerate
    Ответ написан
  • SQLALCHEMY как организовать работу с сессией?

    shabelski89
    @shabelski89
    engineer
    Без примера кода сложно понять, но я использую декоратор для функций работы с БД.
    def catch_session(func):
        """Decorator for Session"""
        @wraps(func)
        def wrapper(self, *args, **kwargs):
            print(f"Try calling db func: {func.__name__}")
            result = func(self, *args, **kwargs)
            try:
                self.session.commit()
                print(f"Success calling db func: {func.__name__}\n")
            except SQLAlchemyError as e:
                print(f"Error - {e}\n")
                self.session.rollback()
            finally:
                self.session.close()
            return result
        return wrapper


    просто оборачиваете им функцию и он сам делает commit если не было ошибок, если было то rollback и сообщение об ошибке.

    взято отсюда
    Ответ написан
    Комментировать
  • Как работает бинарный оператор & в python?

    Vindicar
    @Vindicar
    RTFM!
    Этот оператор может быть перегружен, а потому имеет разную семантику для разных типов данных.
    Для множеств этот оператор возвращает их пересечение.
    Ты можешь добавить поддержку этого оператора в свой класс, объявив магический метод __and__().
    Ответ написан
    2 комментария
  • Счетчик, утечка памяти?

    15432
    @15432
    Системный программист ^_^
    методы Tkinter по обновлению текста Label при вызове из разных тредов текут.

    уберите log_max.configure и log_message.configure
    Ответ написан
    2 комментария
  • Текст не выводится в нужном формате. Почему?

    @twistfire92
    Python backend developer
    Вот предлагаю поиграться с этим кодом. Накидал что первое в голову пришло, но без всяких индексов i j в которых можно легко запутаться
    s = 'Вот какая-то длинная строка, ниже я установил лимит. Строка разбивается на подстроки по длине не превосходящей этот лимит.'
    limit = 20
    
    
    def foo(s, limit):
        rows=[]
        current_row=[]
        length=0
        lst = s.split()
        for word in lst:
            if limit <= (length + len(word) + 1):
                rows.append(' '.join(current_row))
                current_row=[word]
                length = len(word)+1
            else:
                length += len(word)+1
                current_row.append(word)
        rows.append(' '.join(current_row))
    
        return('\n'.join(rows))
    
    print(foo(s, limit))
    Ответ написан
    1 комментарий
  • Как уменьшить количество таблиц-справочников с тремя-четырьмя строками?

    Для коротких списков есть тип данных: ENUM.
    Поддерживается, например, в MySQL, Postgres.

    Идеально подойдёт для:

    1. Статусы заказа (открыт/выпущен/закрыт и т. п.)
    2. Статусы сборки заказа (ожидает сборки, сборка начата, сборка проверена, сборка завершена)
    3. Формула оплаты заказа (тут много вариантов)
    4. Фонд оплаты (собственные средства, федеральный бюджет, территориальный и т. п.))
    5. Внутренний клиент (одно из возможных внутренних ООО)
    6. Ответственный сотрудник
    7. Территориальный сектор
    8. Направление

    Ответ написан
    1 комментарий
  • Как уменьшить количество таблиц-справочников с тремя-четырьмя строками?

    @rPman
    тут несколько подходов, я трогал каждый из них и все они имеют право на существования
    1. оставь как есть, я рекомендую, пусть будет 100500 таблиц справочников (если проблем с именами нет ну и отлично), fk-индексы все это свяжут а инструменты анализа базы данных помогут с этим работать (автоматические query builder с мышевозекательным интерфейсом) и база будет сама следить за тем что идентификаторы справочников не противоречивы
    недостатков я не могу придумать, кроме может быть сильно разросшейся структуры, когда то давно я слышал что некоторые базы данных при увеличении количества таблиц начинают хуже работать но как я понимаю это если их будет десятки тысяч а не десятки и сотни.. может быть резервное копирование такой базы или ее репликация будет проходить чуть медленнее или еще хуже, организационно репликация может быть настроена на не рассылку ddl модификаций, в этом случае создание нового справочника будет задавать работу еще и админам, что нежелательно.

    2. противоположный, использование одной таблицы key-value для нескольких разнородных справочников (id, value, table_name), в 99% случаев можно использовать один сиквенс (одну последовательность идентификаторов), вам же не обязательно чтобы разные справочники начинали счет своих строк с одного и того же числа 1.
    Недостаток - база данных теперь не сможет контролировать что вы используете непротиворечивый идентификатор (можно в запись одного справочника указать номер из другого), хотя несуществующий так же нельзя будет указать (и будут работать delete cascade), так же удобной автогенерации sql не будет. Структура будет проще, так же интерфейс редактирования таких справочников может быть один вместо кучи форм и добавлять новые справочники будет сильно проще (хотя с точки зрения разработки нет особой разницы, один insert ты написал или create table перед этим)

    3. не хранить справочники в базе данных вообще, т.е. за значение справочников отвечает бакэнд (хранятся в статичных файлах или в коде) самый дибильный подход, редактировать такие справочники скорее всего только руками в конфигах/исходниках. Недостатки - база данных совсем не будет знать ничего о значениях и не сможет ни проконтролировать ни помочь с запросами
    Но это позволит снять немного нагрузки с базы данных, сделает структуру проще и позволит перенести управление значениями справочников на откуп ide редактора (если хранить значения справочников в коде, можно дать значениям имена переменных, так как в коде часто их так или иначе заводить придется)

    Лично я третьим подходом в чистом виде не пользовался, но у меня был набор скриптов, которые из справочников в базе данных формировали код с инициализацией констант и их именами для приложения (сами справочники приложением редактироваться не могли) и был соблазн перевести эту часть базы из 'оперативной' в 'для разработчика', так как справочник это что то - отвечающее за отображение информации, но не за бизнеспроцессы (ну примерно как языковые файлы для приложения, не хранить же переводы строк интерфейса тоже в базе, ну так и справочники смогут работать как часть этого интерйфейса и тоже может требовать перевода).
    Ответ написан
    4 комментария
  • Детектор движения на Python?

    Vindicar
    @Vindicar
    RTFM!
    Выбирать область, в которой может быть сдвиг?

    Формируете маску игнорируемых областей, по этой маске заливаете "ненужные" пиксели одним цветом, а потом уже обрабатываете. В залитых пикселях движения точно не будет. =)

    Задача- у статичной студии выявлять не двинул ли ведущий декорации,

    Т.е. нужно обнаружить сам факт движения, а не выделить область, где оно произошло?
    Я бы прошелся небольшим blur'ом по эталонному кадру и по текущему, а потом попиксельно вычел. Остаток прогнать через пороговое преобразование, если есть заметное смещение - значит, что-то не так.
    Но будет работать только если освещение не меняется, а в анализируемую зону не падает тень от ведущего.
    Если декорации цветные, то это можно отчасти нивелировать, работая в системе цветности HSV по каналу Hue (оттенок), игнорируя Saturation (насыщенность) и Value (яркость).
    Ответ написан
    2 комментария
  • Traceback (most recent call last): File 'tbot.py' line 111 in bot.polling()?

    @twistfire92
    Python backend developer
    трейсбеки читайте снизу вверх.
    Ошибка у вас
    File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\random.py", line 378, in choice
        return seq[self._randbelow(len(seq))]
    IndexError: list index out of range

    Значит пытаетесь обратиться по несуществующему индексу. Выясняйте что не так
    Ответ написан
    2 комментария