• Почему не работает функция преобразование списка?

    @fireSparrow
    Работает для третьей версии питона:
    def modify_list(l):
        tmp = [el for el in l if not el%2]
        l.clear()
        l.extend(tmp)
        for i in range(len(l)):
            l[i] //= 2
        
        
    l = [int(i) for i in input().split()]
    modify_list(l)
    print(l)


    PS: Кстати, PEP8 настоятельно рекомендует никогда не использовать l в качестве однобуквенного имени переменной. Лучше использовать другое имя, или, в крайнем случае, использовать заглавную L.

    Never use the characters 'l' (lowercase letter el), 'O' (uppercase letter oh), or 'I' (uppercase letter eye) as single character variable names.

    In some fonts, these characters are indistinguishable from the numerals one and zero. When tempted to use 'l', use 'L' instead.
    Ответ написан
    3 комментария
  • Как остановить часть цикла если другая часть выполнена?

    @fireSparrow
    for item in response['items']:
    
            if values['last_message'] == u'ничего':
                write_msg(item[u'user_id'],u'Ну и иди отсюда')
                continue # Если условие сработало, то в этом месте
                         # цикл перейдёт к следующему item
    
             # А если не сработало, то продолжит:
             write_msg(item[u'user_id'],u'Что изволите??')
    Ответ написан
    Комментировать
  • Как можно проверить, есть ли у определённого пользователя права на запись в папку?

    @fireSparrow
    По идее как-то вот так это должно работать:
    (сам проверить не могу, линукса под рукой нет)

    import pwd, os
    p = pwd.getpwnam("username")
    os.seteuid(p.pw_uid)
    if os.access("/path/to/file", os.W_OK):
        print "have write access"
    Ответ написан
    Комментировать
  • Scrapy как сохранять большие объемы данных?

    @fireSparrow
    В целом, конечно, это зависит от того, как вы потом хотите с этими данными работать. Но вообще каких-то особых проблем быть не должно, 400 000 строк - это не так уж и много.
    Ответ написан
    Комментировать
  • В каких программах создают мультики? есть интересный вопрос, см. в описании -?

    @fireSparrow
    В 2d мультфильмах периодически вижу отдельные объекты, смоделированные в 3d - здания, механизмы, ландшафты. То есть то, что имеет относительно простые формы.
    Но многие другие вещи в 3d как раз сложнее делать.
    Ответ написан
    2 комментария
  • Как найти стажировку для backend junior?

    @fireSparrow
    Отсутствие профильного образование - вообще не проблема.
    У меня экономическое, до текущего года только время от времени в качестве хобби что-то писал. В феврале устроился программистом, причём сразу на мидловскую позицию.

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

    @fireSparrow
    В этой строке
    this = self.neiron
    в переменную this у вас попадает значение self.neiron
    Т.к. нигде в этом цикле вы ничего не делаете с self.neiron, то на следующий итерации в новый this попадёт тот же самый объект. Т.е. фактически всё, что дальше вы добавляете в список, будет просто множеством указателей на один и тот же объект.
    И каждый раз, когда вы меняете вес у объекта по одному из этих указателей, все остальные указатели будут указывать уже на этот измёненный объект. У вас не получится таким образом сделать, чтобы разные указатели указывали на разный версии одного и того-же объекта.

    Выход: вот в этой строке
    this = self.neiron
    нужно делать копию self.neiron перед записью его в this. Тогда это будут действительно разные объекты, которыми можно манипулировать независимо.
    Ответ написан
  • Что за хайп вокруг питона?

    @fireSparrow
    Кроме TOBIE есть и другие рейтинги языков программирования.

    Рейтинг github - питон на втором месте.
    Рейтинг IEEE Spectrum - питон на первом месте.

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

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

    @fireSparrow
    В последних версиях питона появился синтаксический сахар для форматирования строк, с которым всё становится совсем изящно и лаконично:

    alias = [f'www.{val} {val}' for val in alias]
    Ответ написан
  • Какие есть современные фреймворки для Python кроме Django?

    @fireSparrow
    Я на pyramid работал, он попроще джанги.
    Ответ написан
    Комментировать
  • Какую операционную систему использовать для разработки на Python?

    @fireSparrow
    В целом, чисто коддингом можно заниматься одинаково хорошо как в винде, так и в линуксе.
    Однако, кроме написания кода у разработчику часто возникают задачи, которые требуют знания линукса хотя бы на уровне продвинутого пользователя.
    Поэтому переходить на линукс однозначно стоит.

    Лично у меня и дома и на работе стоит Linux Mint и я его всячески рекомендую - под капотом у него та же убунта, но интерфейс гораздо приятнее и попривычнее для пользователя винды.
    Ответ написан
    Комментировать
  • Python 3 | Какая ошибка в функции создания словаря?

    @fireSparrow
    Как правильно сделать, вам уже ответили, а я хочу прояснить одно из ваших затруднений:

    list(map(text(), self.polya))

    Этот код действительно не будет работать.
    В глобальной области видимости у вас нет функции 'text', она существует только как метод внутри конкретных объектов. Обратиться в 'map' к методам итерируемых объектов можно через лямбда-функцию:

    list(map(lambda o: o.text(), self.polya))

    ЗЫ: Брать в качестве имён русские слова, написанные транслитом, - дурной стиль. Используйте английские слова.
    Ответ написан
    Комментировать
  • Как реализовать поиск вхождений разной длины в строку с большего к меньшей?

    @fireSparrow
    В модуле collections есть структура OrderedDict, которая является словарём, хранящим порядок элементов.
    Если заполнить его парами ключ-значение в порядке убывания длины ключа, то именно так их он и сохранит, и при итерации будет отдавать сначала длинные ключи.
    Единственное, что нужно помнить - после того, как такой словарь построен, при необходимости добавить новую пару, словарь нужно будет целиком заново перестраивать.
    Ответ написан
    Комментировать
  • Возможно ли разработать полноценный красивый сайт для web, используя только и только средства одного языка программирования?

    @fireSparrow
    Вся веб-разработка делится на фронтенд и бэкенд.
    Фронтенд - это то, что в итоге придёт в браузер пользователя и будет ему показано.
    Бэкенд - это про то, как на стороне сервера подготовить то, что нужно отправить на сторону фронтенда и поддерживать коммуникацию с ним.

    И вот если бэкенд можно писать вообще на чём угодно, главное чтобы эта технология могла быть запущена на сервере и потом получать запросы от пользователей и отправлять им ответы, то фронтенд строго ограничен тем, что может понять и отобразить браузер. А браузер понимает только HTML+CSS+JS.
    Ответ написан
    Комментировать
  • А нельзя этот аргумент присвоить переменной?

    @fireSparrow
    Имена параметров метода определены внутри него самого. Поэтому их никак не изменить без копания во внутренностях метода.

    Но вы можете сделать функцию-обёртку:
    def msend(u='', m=''):
      return messages.send(user_id=u, message=m)


    А потом вызывать её так:
    msend(u='some_id', m='some_text')
    Ответ написан
    Комментировать
  • Какие книги или курсы/статьи посоветуете для изучения Питона для того кто знает c# и js?

    @fireSparrow
    Начните с этого:
    https://pythonworld.ru/samouchitel-python

    Для того, чтобы писать логику поверх существующих библиотек - более чем достаточно.
    Если после прочтения будет хотеться продолжения - там есть список рекомендуемых книг.

    UPD: И ещё погуглите по запросу "идиоматический питон" - найдёте хорошие подборки "best practices"
    Ответ написан
    Комментировать
  • Как сложить строки как числа?

    @fireSparrow
    Если переписать на человеческий язык, то получится примерно так:

    Выполнять, пока в 'a' или 'b' ещё остались символы, или пока число 'c' не нулевое {
        Взять по одной цифре с конца из 'a' и 'b', сложить как числа и прибавить к 'c'
        Дописать к 'res' цифру, которая является остатком от деления 'c' на 10
            // То есть это попросту цифра, на которую заканчивается число 'c'
        Записать в 'c' boolean - было ли оно на этом шаге больше 9
           // Если было, то осталась необработанная цифра и нужно делать ещё итерацию
    }


    Отдельно стоит добавить, что если в конце итерации 'c' была 'true', то в начале следующей итерации к этому значению будет добавлена сумма двух цифр.
    При сложении true интерпретируется как 1.
    Соответственно, 'c' между итерациями переносит единицу в следующий по старшинству разряд и служит вместо той точки, которую мы при ручном сложении в столбик ставим в таких случаях над цифрой.
    Ответ написан
    Комментировать
  • Могут ли два объекта разных типов иметь одинаковый хэш?

    @fireSparrow
    Не нужна тут ни какая защита.
    У хэша нет задачи быть разным для разных объектов. Хэш нужен в основном для того, чтобы обеспечивать работу таких структур данных как словарь или множество. А там коллизии (ситуации, когда разные объекты имеют одинаковый хэш) - вполне штатное явление.
    Хотя, конечно, и стараются делать так, чтобы оно возникало не очень часто, иначе производительность проседает.

    Если интересны подробности, почитайте про хэш-таблицы:
    https://ru.wikipedia.org/wiki/%D0%A5%D0%B5%D1%88-%...
    Ответ написан
  • Как набирать группу задач при их рандомном поступлении?

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

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

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

    @fireSparrow
    Про то, что сеанс работы с файлом нужно закрывать, вам уже сказали.
    Я хочу добавить к этому пару моментов:

    1. Чтобы не заморачиваться тем, закрыли вы файл или нет, рекомендуется всюду, где это целесобразно, использовать менеджеры контекста:

    with open('some_file', 'w') as txt:
        txt.write('Hello world!')


    2. Если вы создаёте переменную внутри try, то любые манипуляции с этой переменной тоже должны происходить внутри этого же блока try. А то исключение ошибки ввода-вывода вы отловили, но если такая ошибка произойдёт, то переменная txt не создастся, и у вас выскочит исключение NameError, когда вы попытаетесь сделать txt.write(st).

    3. Точки с запятой в питоне не ставят.
    Ответ написан