zen_of_python | Unsorted

Telegram-канал zen_of_python - Zen of Python

20144

Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL

Subscribe to a channel

Zen of Python

​​Поздравляем победителей

Задачу о клумбе верно решили:

— Cool and Fun Python (@Python3k);
— @Cheshir78;
— Лев Выскубов;
— @patriarch_chesslovo;
— @vsugoyak;
— @sidor0912;

Кратчайшие верные решения предложили Лев Выскубов:

def is_fitting(flowerbed, n):
  flowerbed = [0] + flowerbed + [0]  # Чтобы на краю можно было цветочек посадить :-)
  k = 0
  for slot in range(1, len(flowerbed) - 1):
    if not any(flowerbed[(slot - 1) : (slot + 2)]):
      flowerbed[slot] = 1
      k += 1
  return k >= n

и @patriarch_chesslovo:

def is_fitting(flowerbed, required_slots):
  is_prev_slot_filled = sum(flowerbed[0:2]) == 0
  vacant_slots = int(is_prev_slot_filled)
  for i in range(1, len(flowerbed)):
    is_curr_slot_filled = not is_prev_slot_filled and sum(flowerbed[i-1:i+2]) == 0
    vacant_slots += int(is_curr_slot_filled)
    is_prev_slot_filled = is_curr_slot_filled
    if vacant_slots >= required_slots:
      return True
  return vacant_slots >= required_slots

Отдельное спасибо @patriarch_chesslovo за описание пограничных случаев (одноместная клумба) и проверку некоторых решений.

Присоединяйтесь: одна задача в неделю — это вполне оптимальная нагрузка, а навык решать задачи все равно будет расти.

#задача

@zen_of_python

Читать полностью…

Zen of Python

Задача о комбинировании подстрок

Впрочем, почему бы и нет! Задача от подписчика @StSav012:

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


>>> merge('acfg', 'bcht')
... 'abcfght'


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

#задача

@zen_of_python

Читать полностью…

Zen of Python

Ишь, хитрец, до самой сути π решил добраться силами Python

#кек

@zen_of_python

Читать полностью…

Zen of Python

python-graph-gallery.com | Коллекция почти всех типов графиков с кодом для Matplotlib, Plotly etc.

Возможно, вы попадали на этот сайт, когда только осваивали EDA датасетов. На python-graph-gallery.com собрана шикарная коллекция популярных видов dataviz с полноценными сниппетами для рендеринга таковых.

#лучшиепрактики

@zen_of_python

Читать полностью…

Zen of Python

​​Что нового в Python 3.13

Весьма богатый на обновления релиз:

— Улучшения интерпретатора и текстов ошибок;
— поддержка цвета в интерактивном интерпретаторе и выводе doctest;
— добавлен JIT-компилятор;
— TypeVar, ParamSpec теперь поддерживают значения по умолчанию и многое другое.

Полный What's New
Скачать Python 3.13.0a1

#факты

@zen_of_python

Читать полностью…

Zen of Python

Всё о безопасной разработке расскажут на PHDays Fest 2 в Лужниках 23–26 мая

Positive Technologies вместе с сообществом POSIdev подготовили несколько секций с докладами для разработчиков: 

General development,
Development Security,  
Platform Engineering,
Data Engineering,
Team Lead,
Python совместно с сообществом Moscow Python,
Dev tools, languages & frameworks.

Спикеры из Samokat, Тинькофф, СберМаркет, Yandex Cloud, Kaspersky, Lamoda Tech, Aвито, Positive Technologies и других компаний расскажут про архитектуру распределённых систем, безопасную разработку приложений, алгоритмы, языки и инструменты разработки, управление командой и не только. 

В перерывах можно будет поиграть в IT-крокодила, решить безопасный кроссворд, выиграть полезную книгу или просто отдохнуть в лаунж-зоне. А в субботу, 25 мая, поучаствовать в воркшопах экспертов из Positive Technologies, Yandex Cloud и Hilbert Team, Wildberries или в олимпиаде по программированию

Программа
Регистрация

Это #партнёрский пост

Читать полностью…

Zen of Python

​​Водяной знак на Matplotlib-графике

Лаконичная англоязычная статья о методе, позволяющем защитить свои графики от воровства.

#факты

@zen_of_python

Читать полностью…

Zen of Python

bytewax для процессинга Kafka и подобных

Фреймворк объединяет обработку потоков и событий Flink, Spark и Kafka Streams и других аналогичных решений.

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

Проект на GitHub

#фреймворк

@zen_of_python

Читать полностью…

Zen of Python

​​Поздравляем победителей

Задачу о подстроке верно решили:

— @GeorKu;
— @StSav012;
— @IPyth0n (@X_Python);
— @stalker1337;
— @HackingSection;
— @Shihiyev;
— @sidor0912
— @patriarch_chesslovoю

Кратчайшие верные решения предложили @HackingSection:

def is_substring(s, t, nxt = 0):
  return len(s) == [nxt := nxt + 1 for i in t if i == s[nxt]][-1]

и @SmirnGreg:

def is_substring(s: str, t: str):
  return bool(re.match('.*' + '.*'.join(s) + '.*', t)) 

Отдельное спасибо @SmirnGreg за замер скорости исполнения функций (!)

NB! Учитывайте повторяющиеся буквы в подстроке s. Для некоторых решений следующая пара строк отдаёт True, что явно неверно:

s = "agggc"
t = "cgxggxxgxxa"

Присоединяйтесь: раз в неделю задачу решить — это вполне оптимальная нагрузка для занятого кодера.

#задача

@zen_of_python

Читать полностью…

Zen of Python

Задача о клумбе

У вас есть длинная клумба, на которой часть слотов занята, часть нет. Цветы нельзя сажать на соседних слотах. Вам подаётся список целочисленных значений, где 0 – пустой, а 1 — занятый слот.

Создайте функцию is_fitting(), которая возвращает true, если на клумбе можно посадить n новых цветов по правилу свободных соседних слотов.

Для теста:


flowerbed = [1,0,0,0,1]
>>> is_fitting(flowerbed, 1)
... true
>>> is_fitting(flowerbed, 2)
... false


@zen_of_python

Читать полностью…

Zen of Python

​​Конференция Pytup

1 июня Яндекс проведёт в Нижнем Новгороде бесплатную конференцию (можно смотреть онлайн) о свежем в мире Python. Среди докладчиков замечены кодеры из VK, Lamoda, МТС и Авито:

Среди докладов интересные (по мнению админа):

— RAG на DataSphere;
— Unbiased Review of Environment Management and Packaging Systems;
— Зачем нужен GIL и как от него избавиться.

Посадочная конференции

#события

@zen_of_python

Читать полностью…

Zen of Python

​​Вопросы от новичков

Zen of Python поддерживает новоприбывших в особой рубрике. Как это работает:

— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;

#вопросыновичков

@zen_of_python

Читать полностью…

Zen of Python

​​Как в одно слово назвать Django-разработчика?

🏆— Джангист
🦄 — Джангер
👀 — Джангэстро
🌚 — Свое (поделитесь в комментариях)

Читать полностью…

Zen of Python

​​tkforge: из Figma в Tkinter

Интересная коллекция компонентов, позволяющая сверстать на канвасе небезызвестной Figma интерфейс, а потом командной строкой перегнать это сразу в Python-код для Tkinter.

#библиотека

@zen_of_python

Читать полностью…

Zen of Python

​​Фейковые техинтервью и трояны

Если верить статье с xakep.ru, группа корейских IT-компаний приглашает на собеседование на должность фулстэк-разработчика, и под эгидой демонстрации навыков просят клонировать и использовать репозиторий Dev Popper — якобы NPM-расширение.

На деле же при запуске активируется обфусцированный js-скрипт, который в итоге запускает py-скрипт (!) — троян, собирающий:
— данные для входа на ваши сервера;
— историю CLI-команд (ищет креды, опять же);
— возможности для дистанционного развёртывания вредоносного ПО.

Коллеги, с корейскими компаниями пока на собеседования не ходим.

#факты

@zen_of_python

Читать полностью…

Zen of Python

​​Итерируемые объекты в Py

Доступнейший англоязычный лонгрид с небезызвестного realpython.com про последовательности — списки, словари и проч., а также про методы слайсинга, конактенации, сравнения и другого обращения с ними.

#факты

@zen_of_python

Читать полностью…

Zen of Python

​​Апгрейд REPL в Py 3.13

С выходом новой минорной версии ЯП совпал существенный апгрейд интерактивного интерпретатора. Ментор Трей Ханнер разобрался, в чем польза и удобство, в частности:

— цвета в shell;
— «блочная» память (при нажатии стрелки вверх «вспоминается» блок кода, а не последняя строка);
— вставка кода сохраняет (ура!) отступы и некоторые другие улучшения.

#факты

@zen_of_python

Читать полностью…

Zen of Python

#кек

@zen_of_python

Читать полностью…

Zen of Python

​​Вопросы от новичков

Zen of Python поддерживает новоприбывших в особой рубрике. Как это работает:

— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;

#вопросыновичков

@zen_of_python

Читать полностью…

Zen of Python

​​Самописный транскрибатор конференций

В 2024 модно стало не слушать все на созвонах, а экстрактить самое важное ИИ-инструментами вроде tl;dv. На официальном YouTube-канале компании AssemblyAI (специализируются на text-to-speech, speech-to-text) опубликовали 12-минутный туториал. Пройдя те же шаги, всего за 28 строк кода ̶в̶ы̶с̶т̶а̶в̶и̶т̶ь̶ ̶в̶и̶д̶е̶о̶з̶а̶с̶т̶а̶в̶к̶у̶ ̶с̶ ̶с̶о̶б̶о̶й̶ ̶и̶ ̶н̶е̶ ̶х̶о̶д̶и̶т̶ь̶ ̶н̶а̶ ̶м̶и̶т̶а̶п̶ы̶ ̶б̶о̶л̶ь̶ш̶е̶ ̶н̶и̶к̶о̶г̶д̶а̶ транскрибировать Zoom-конфу, или любую другую.

🌭 — надоели созвоны, только «фокусное» время отнимают
🏆 — я гуру созвонов, никогда не надоест
🌚 — другое (напишите в комментариях)

#библиотека

@zen_of_python

Читать полностью…

Zen of Python

Вопрос от подписчика

Задаёт @EpicBacker:

«Подскажите пожалуйста, а как использовать API чатаGPT через питон, и как получить ключ API.»

От админа: в своё время пробовали ChatGPT API по мотивам вот этой статьи (вам потребуется VPN).

#обсуждение

@zen_of_python

Читать полностью…

Zen of Python

Яндекс приглашает на Young Con — первый фестиваль о карьере в IT и современных технологиях

— 6000 участников.
— 10+ часов приключений и нетворкинга.
— 30 топ-менеджеров Яндекса, которые поделятся личным опытом и расскажут про возможности, которые дает работа в крупной IT-компании.
— Секреты технологий.
— И не только!

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

Гостей Young Con ждёт ещё одно событие: финал «Баттла вузов» — турнира по программированию среди студентов с призовым фондом 1 млн рублей. Выигрыш участники команды-победителя разделят между собой. Завершится фестиваль выступлением хедлайнеров The Hatters и ХЛЕБ.

Young Con пройдёт 27 июня на Live Arena в онлайн- и офлайн-формате.
Зарегистрироваться и узнать подробности можно здесь.

Это #партнёрский пост

Читать полностью…

Zen of Python

​​socket | Пусть ОС сама выбирает порт

Если вы пишете веб-приложения, то наверняка хотя бы раз сталкивались с «портовой путаницей» (стандартный 8000 занят, значит, выбираем 4040, а потом будь что будет). В немаленьком англоязычном лонгриде Кристоф Шисль разбирается, как упростить себе эту задачу с помощью библиотеки socket и псевдорандомизации.

#библиотека

@zen_of_python

Читать полностью…

Zen of Python

portr — аналог ngrok для команды

Это решение позволяет создавать локальные соединения http / tcp / websocket. Дружит с Cloudflare по части SSL-сертификатов, даёт грамотно инспектировать. На видео консоль администратора, позволяющая шерить проект с коллегами.

Проект на GitHub

#инструмент

@zen_of_python

Читать полностью…

Zen of Python

​​PkgInspect: улучшенный менеджмент зависимостей

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

— PkgInspect отдаёт информацию о версиях зависимостей;
— PkgVersions сравнивает версии разных виртуальных сред и даёт массово обновляться;
— PkgMetrics отдаёт стату os про тот или иной инструмент.

Проект на GitHub

@zen_of_python

Читать полностью…

Zen of Python

​​Вопрос от подписчика

Задает @deigumnov:

"Есть ли пример кода, который взаимодействует с апач кафкой - может послать сообщение, вычитать что есть сейчас, посмотреть сколько в очереди и т.п."

! Пожалуйста, будьте взаимовежливы. Всем нам нужно место, где окажут помощь.

@zen_of_python

Читать полностью…

Zen of Python

​​Вопрос от подписчика

Задает @Scotch_flip:

"Здравствуйте, у меня такой вопрос:
с помощью tkinter создал окно с кнопками от 1 и до 25, хочу сделать при нажатии кнопки с command меня[ть] цвет рандомно выбранных чисел или же по очереди меня[ть] цвет каждой кнопки , пробовал много разных способов, но увы".

! Пожалуйста, будьте взаимовежливы. Всем нам нужно место, где окажут помощь.

@zen_of_python

Читать полностью…

Zen of Python

​​Сложность структур данных и алгоритмов

Если вы подступились к объёмным данным в проекте, самое время задуматься: а те ли методы и функции вы используете? Какова будет скорость интерпретации и не «повесится» ли программа вообще?

На pythonmorsels.com опубликовали англоязычную статью на 9 минут про виды сложностей (они на графике ниже), и про сравнение встроенных методов списков, очередей (queue), словарей, сетов, класса-счётчика (Counter), кучи и других структур. Самое оно, чтобы аккуратно вьехать в стадию оптимизации своего кода.

Если вам нужно сначала разобраться с понятием Time Complexity, вот доступная статья от основателя Типичного программиста.

#лучшиепрактики

@zen_of_python

Читать полностью…

Zen of Python

Инженер-программист, помни!

Если ты всей душой в майских праздниках, то эксперименты с «пивным» пиком Балмера никто не отменял.

«Каким-то образом Балмер посчитал, что 1,29–1,38‰ алкоголя в крови открывают у него сверхчеловеческие способности к программированию: он выпивал пару литров пива, входил в состояние лёгкого опьянения и мог продуктивно кодить».

Ну если сверхкода в таком состоянии все же не написать, то за «жабистые» таски точно легче браться.

#кек

@zen_of_python

Читать полностью…

Zen of Python

​​Поздравляем победителей

Задачу об инверсии строки верно решили:

— Cool and Fun Python (@Python3k);
— Лев Выскубов;
— @sidor0912;
— @lomserman;
— @HackingSection;
— @VasilTerekin (засчитываю, хотя запрошена функция);
— @patriarch_chesslovo;
— @IvanImmortal;
— @Sentiago.

Кратчайшие верные решения предложили @patriarch_chesslovo:

VOWELS_LOWERCASE = set('aeoiuаоыуэяёиюе')

def invert_vowels(strng):
  reversed_vowels = (i for i in strng[::-1] if i.lower() in VOWELS_LOWERCASE)
  return ''.join([i if i.lower() not in VOWELS_LOWERCASE else next(reversed_vowels) for i in strng])

и @HackingSection:

def invert_vowels(s, vowels = "аяоёиыуюеэ"):
  vowelsInText = [j for j in s if j in vowels]
  return [vowelsInText.pop(-1) if i in vowels else i for i in s]

Отдельный респект Cool and Fun Python за разбор своего решения:

Предполагается, что все буквы в тексте строчные и русские. Иначе требуется доработать строку гласных.

У решения линейная асимптотика. Но если очень хочется, можно повысить быстродействие, превратив vowels в множество строк односимвольников: vowels = {'а', 'я', ...}

И преобразование строки в список и обратно - вынужденная мера. Строка в Python неизменяемая. Впрочем, на сохранение асимптотики O(N) это не влияет.

Кстати, если бы постановщик задачи гарантировал наличие гласных (всё же предлоги "в", "с" тоже считаются словами), можно было бы убрать проверки left < right в двух внутренних циклах.

Отдельная благодарность @lomserman за создание тестирующей функции:

def test(original: str, expected: str):
  result = invert_vowels(original)
  print(result)
  assert result == expected

p.s. Админ подписывается на всех ребятушек, что решают задачи. Если «провалиться» в профили решивших, там полно питонической годноты.

#задача

@zen_of_python

Читать полностью…
Subscribe to a channel