PythonTalk
4.8K subscribers
1.5K photos
49 videos
6 files
1.34K links
Привет, меня зовут Олег Булыгин 👋

🐍 Здесь я делюсь полезной информацией для тех, кто пишет код на Python: от разработки до Data Science.

По вопросам: @obulygin91
Download Telegram
🐍 Дзен Питона: Как он появился?

Почти все знают про import this. "Красивое лучше, чем уродливое", "Явное лучше, чем неявное" — это философия и культурный код языка.

Но мало кто знает, как этот Дзен на самом деле родился. Не в ходе медитаций и не в результате божественного откровения.

Давайте узнаем как:
▫️Один чувак из core-команды устал от бесконечных холиваров в рассылках и решил "устаканить" правила.
▫️ При чём тут конкурс слоганов для футболок 👕.
▫️ Как сам модуль this следует прописанным в нём правилам.

#так_сложилось
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥431
Не даётся Python? Большая конкуренция? Есть альтернативы! 👍

1️⃣ YoptaScript — язык для «чётких пацанов», который транслируется в JS. Вместо банального if/else здесь используется куда более понятная конструкция: вилкойвглаз... иливжопураз.

2️⃣ В†† — для тех, кому ближе величие Древней Руси. Это набор макросов для C++, где программист — витязь, а баги — «ящеры». Соответственно, оператор break здесь называется бить_ящеров.

3️⃣ Birp (Большой Русский Питон) — полная идейная трансляция синтаксиса Python на русский. def превращается в объявить, import — в подключить. Идеально для тех, кто считает английский язык единственным недостатком питона.

4️⃣ Shakespeare Programming Language (SPL) — исходный код маскируется под пьесу Шекспира. Переменные — это персонажи, а присваивание значений происходит через оскорбления. Программа "Hello World!" начинается с того, что Гамлет говорит Ромео: You lying stupid fatherless big smelly half-witted coward!

5️⃣ Tabloid — кликбейт как Тьюринг-полный язык. Вместо print YOU WON'T WANT TO MISS. Вместо returnSHOCKING DEVELOPMENT. А каждая программа обязана заканчиваться на PLEASE LIKE AND SUBSCRIBE.

На примеры кода можете посмотреть в статейке ◀️

На какой бы переписали свои проекты? Ах, да PLEASE LIKE AND SUBSCRIBE 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54😁21👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🤯 Tencent выкатили нейронку, которая из одного фото генерирует целый 3D-мир

Это HunyuanWorld-Voyager.
В отличие от аналогов, эта штука отдает на выходе не только RGB-картинку, но и полноценную карту глубины (RGB-D). На практике это значит, что сгенерированное видео можно без танцев с бубном превратить в настоящую 3D-сцену, например, через Gaussian Splatting.

Порог входа, конечно, конский — для запуска нужно минимум 60 ГБ видеопамяти. Но сам факт, что инструмент такого уровня теперь в open-source, — это прикольно.

Разобрал, как это работает и как запустить у себя (если у вас есть доступ к A100 😉) :
👉🏻 Tencent HunyuanWorld-Voyager: создаем 3D-миры из одного фото. Разбор технологии и гайд по запуску

А видеопересказ тут 👈🏻

#щупаем_сорцы
👍7🔥32🤯2🙏11
PythonTalk
Photo
Судя по результатам, курсы ужасны буквально во всём 😅
6😁3💯1🤣1😨1🤝11
This media is not supported in your browser
VIEW IN TELEGRAM
Наткнулся на новый ИИ-агент для VS Code — Kilo Code.

Что там под капотом?

1️⃣Мульти-агентный движ: на самом деле тут целая "команда" агентов:
▫️Orchestrator — разбивает задачи на подзадачи.
▫️Architect — планирует архитектуру.
▫️Code — пишет код.
▫️Debug — отлаживает
2️⃣ Никаких галлюцинаций (обещают!): Kilo автоматически чекает документацию библиотек и проверяет свой код на ошибки, а потом сам же их чинит. Верим, верим 😏
3️⃣ Полностью Open Source, без лок-ина. Никто не тренируется на ваших данных, вы можете использовать свои API-ключи, локальные модели или 400+ хостовых, которые они предоставляют.
4️⃣ 0% комиссии. Платите ровно столько, сколько просят OpenAI/Anthropic/Google, ни копейки сверху. А на старте ещё и до 25$ кредитов дают.

Kilo Code — это, кстати, "форк форка": он родился из Roo Code, который, в свою очередь, форкнулся от Cline. Такие дела.

🔗 Оф. сайт: kilocode.ai
🔗 Репо GitHub: github.com/Kilo-Org/kilocode

Попробуйте, отпишитесь, у меня уже рук не хватает всё новое изучать 😅

#тулбокс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥32😱221
Просить прощения или разрешения? 🙏

Сегодня у нас на ринге — два фундаментальных подхода к обработке ошибок в Python.

С одной стороны — LBYL (Look Before You Leap). "Cначала сто раз проверь, потом один раз сделай".

С другой — EAFP (Easier to Ask for Forgiveness than Permission). "Сначала фигачим, а если что-то сломается — элегантно ловим исключение".

Спойлер: Python — язык для оптимистов. Но, как всегда, есть нюансы 🌚

Листай карточки, чтобы понять, в чём разница 🧐

#два_стула
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍116🔥21🙏1
Сегодня у нас классическая задачка, которая отлично проверяет умение мыслить алгоритмически.

Представьте, что вам дали гистограмму — набор столбцов разной высоты. Внезапно пошел сильный дождь, и пространство между столбцами заполнилось водой.
Ваша задача — написать алгоритм, который посчитает общий объём всей скопившейся воды 🌊 для любого такого "ландшафта".

Вода может скапливаться только в "бассейнах". Границы такого бассейна — это два столбца, которые выше, чем столбцы между ними.
Ключевой момент: уровень воды в любой такой "яме" ограничен высотой самого низкого из двух столбцов-ограничителей. Если слева стена высотой 5, а справа — 3, то вода выше 3 не поднимется.

📜 Условие:
Дана последовательность неотрицательных целых чисел heights, где каждое число — это высота столбца шириной 1. Вам нужно написать функцию, которая вычисляет, какой максимальный объем воды может скопиться между этими столбцами.

➡️ Формат ввода:
- Список целых чисел heights.

⬅️ Формат вывода:
- Одно целое число — суммарный объем удержанной воды.

💡 Примеры:

Пример 1:
# Вход:
heights = [0, 2, 0, 3, 1, 0, 1, 3, 2, 1]

# Выход:
9

Пояснение: вода скапливается в нескольких "бассейнах". Между столбом высотой 2 и первым столбом высотой 3 задержится 2 единицы воды. Самый большой бассейн образуется между двумя столбами высотой 3, он удержит 7 единиц воды. Итого 9.


Пример 2:
# Вход:
heights = [4, 2, 0, 3, 2, 5]

# Выход:
9


Решаем ⤵️

#алгособес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🤯3👍21
Программируем всем телом? Легко! 🤸‍♀️

Наткнулся тут на пару залипательных open-source проектов на Python от одного разраба, которые превращают ваше тело в клавиатуру и игровой контроллер.

Знакомьтесь, два брата-акробата:

1️⃣ Semaphore — полнофункциональная клавиатура для всего тела.
Буквально. Хотите напечатать букву — принимаете позу из семафорной азбуки, разводя руки под нужными углами. Нужен Shift — разжимаете кулаки. Backspace — закрываете рот обеими руками. А чтобы повторить последний символ, надо подпрыгнуть.

2️⃣ Semaphore Games — кастомный игровой контроллер, логическое продолжение предыдущего проекта.
Тут уже всё заточено под игры. Вы сами в CSV-файле настраиваете, какое движение какой кнопке соответствует. Например, взмах левой руки на 45 градусов — это «газ», а подъём правой ноги — «прыжок». Есть даже поддержка двух игроков на одном экране. Идеально для Mortal Kombat 🌝

Под капотом OpenCV для захвата видео и MediaPipe Pose для распознавания точек на теле. Всё это дело обсчитывает углы и положения конечностей и эмулирует нажатия клавиш. На MacOS, правда, придётся дать права доступа терминалу, но это мелочи.

Представил себе сеансы парного программирования при помощи этих штук 😅
👍42🔥1😁1🤔1🤣11
💧 Разбор задачи о дождевой воде

Эталонное решение тут сводится к методу двух указателей. Идея в том, чтобы двигаться с двух концов массива одновременно, постепенно вычисляя объем воды.

def trap(heights: list[int]) -> int:
if not heights:
return 0

left, right = 0, len(heights) - 1
max_left, max_right = heights[left], heights[right]
total_water = 0

while left < right:
if max_left < max_right:
left += 1
max_left = max(max_left, heights[left])
total_water += max_left - heights[left]
else:
right -= 1
max_right = max(max_right, heights[right])
total_water += max_right - heights[right]

return total_water


🧐 Как это работает?

- Инициализация: Заводим два указателя (left и right) по краям массива и две переменные для хранения максимальной высоты, встреченной слева (max_left) и справа (max_right).

- Главный цикл: Двигаемся, пока указатели не встретятся. На каждом шаге мы принимаем решение, какой указатель сдвинуть.

- Выбор указателя: Мы сравниваем max_left и max_right. Почему? Потому что объем воды над текущим столбиком ограничен наименьшей из двух максимальных стен по бокам. Сдвигая указатель со стороны меньшего максимума, мы гарантируем, что с другой стороны точно есть стена не ниже (а может и выше), которая удержит воду.

- Расчет воды:
- Если max_left < max_right, значит, левая стена — ограничивающая. Мы сдвигаем left на шаг вправо. Обновляем max_left и добавляем к общему объему max_left - heights[left] (если разница положительная).
- В противном случае то же самое делаем для правого указателя.

Анализ сложности:
⏱️ Время: O(N), так как мы проходим по массиву всего один раз.
💾 Память: O(1), потому что мы используем лишь несколько переменных, и дополнительная память не зависит от размера входных данных.

#алгособес
🔥3👍21🙏1🏆1
Что произойдет, когда изменяемый тип данных встретится с неизменяемым?

#квиз
3👍2🔥1