Поздравляем победителей
Задачу об идеальном квадрате верно решили:
— @QuantumaStelata;
— @nxiqns;
— @WhonixMan;
— @GeorKu;
— @patriarch_chesslovo;
— @maslyaev.
Кратчайшие верные решения предложили @QuantumaStelata:
@nxiqns:
и @WhonixMan:
Отдельно выделим решение @maslyaev, учитывающее случай очень больших чисел:
#задача
@zen_of_python
Задачу об идеальном квадрате верно решили:
— @QuantumaStelata;
— @nxiqns;
— @WhonixMan;
— @GeorKu;
— @patriarch_chesslovo;
— @maslyaev.
Кратчайшие верные решения предложили @QuantumaStelata:
x = lambda s: (s**(1/2)).is_integer()
@nxiqns:
def check_square_perfection(num):
return (num**0.5).is_integer()
и @WhonixMan:
def check_square_perfection(num):
return int(num**0.5) == num**0.5
Отдельно выделим решение @maslyaev, учитывающее случай очень больших чисел:
def check_square_perfection(area: int | float) -> bool:
if area == 0 or area == 1: # На 0 и 1 ломается вавилонский метод
return True
if area < 4: # Отрицательная area даст False
return False
if area % 1 != 0: # Нецелая area даст False
return False
int_area = int(area)
sqrt = int_area // 2
while True:
next_sqrt = (sqrt + int_area//sqrt)//2
if next_sqrt == sqrt:
break
sqrt = next_sqrt
return sqrt * sqrt == int_area
#задача
@zen_of_python
👍8❤3🍌1
UTF-8 станет дефолтным стандартом, начиная с Python 3.15
В PEP 686 описывается переход на UTF-8 — распространённый стандарт кодирования символов. Это затронет:
— все py-файлы;
— файлы конфигураций;
— большинство IDE, включая Visual Studio Code и Блокнот Windows (при создании файла.py);
— большинство веб-сайтов на Python.
#факты
@zen_of_python
В PEP 686 описывается переход на UTF-8 — распространённый стандарт кодирования символов. Это затронет:
— все py-файлы;
— файлы конфигураций;
— большинство IDE, включая Visual Studio Code и Блокнот Windows (при создании файла.py);
— большинство веб-сайтов на Python.
#факты
@zen_of_python
🔥15👍6🎉1🍌1
Результаты опроса Django-разработчиков
JetBrains ещё в конце 2023 года провёл опрос (на английском) с целью узнать предпочтения джангистов. Результат довольно предсказуемый, однако все равно бесценный для тех, кто выбирает дополнительные компоненты.
Хороший способ для новичка познакомиться с общепринятыми дополняющими инструментами, сопровождающими Django-проект, будь то гео-бэкенд, кэш-хранилище или БД.
#факты
@zen_of_python
JetBrains ещё в конце 2023 года провёл опрос (на английском) с целью узнать предпочтения джангистов. Результат довольно предсказуемый, однако все равно бесценный для тех, кто выбирает дополнительные компоненты.
Хороший способ для новичка познакомиться с общепринятыми дополняющими инструментами, сопровождающими Django-проект, будь то гео-бэкенд, кэш-хранилище или БД.
#факты
@zen_of_python
👍1
Знакомство с aiogram
Если вы хотите вкатиться в Python-разработку, боты — неплохой способ сделать это. Разработчик @mastergroosha сверстал целую серию русскоязычных статей об одном из самых ходовых в 2024 году «ботических» фреймворках. Там можно познакомиться с хэндлерами, диспетчерами, асинхронностью и проч. — всем тем, что новичка обычно смущает при заскакивании на этот поезд.
#лучшиепрактики
@zen_of_python
Если вы хотите вкатиться в Python-разработку, боты — неплохой способ сделать это. Разработчик @mastergroosha сверстал целую серию русскоязычных статей об одном из самых ходовых в 2024 году «ботических» фреймворках. Там можно познакомиться с хэндлерами, диспетчерами, асинхронностью и проч. — всем тем, что новичка обычно смущает при заскакивании на этот поезд.
#лучшиепрактики
@zen_of_python
👍6🍌2
Безсерверный Python: Cloudflare Workers
Workers на Cloudflare — это платформа, позволяющая исполнять бессерверные функции, то есть отчасти замена привычной архитектуре проекта на сервере.
Теперь вы можете импортировать подмножество популярных пакетов Python, включая FastAPI, Langchain, Numpy и другие. Никаких дополнительных шагов сборки или внешних цепочек инструментов не требуется.
Об обновлении Cloudflare
#факты
@zen_of_python
Workers на Cloudflare — это платформа, позволяющая исполнять бессерверные функции, то есть отчасти замена привычной архитектуре проекта на сервере.
Теперь вы можете импортировать подмножество популярных пакетов Python, включая FastAPI, Langchain, Numpy и другие. Никаких дополнительных шагов сборки или внешних цепочек инструментов не требуется.
Об обновлении Cloudflare
#факты
@zen_of_python
❤3👍2👏1🍌1
Вопросы от новичков
Zen of Python поддерживает новоприбывших в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросыновичков
@zen_of_python
Zen of Python поддерживает новоприбывших в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросыновичков
@zen_of_python
❤1🍌1
Forwarded from Инструменты программиста
This media is not supported in your browser
VIEW IN TELEGRAM
JSON Crack, устраняющий разрыв между данными и визуализацией
Это расширение VSCode позволяет разработчикам, аналитикам данных и энтузиастам легко преобразовывать сложные наборы данных JSON в информативные и визуально привлекательные графики.
Цена: бесплатно
@prog_tools
Это расширение VSCode позволяет разработчикам, аналитикам данных и энтузиастам легко преобразовывать сложные наборы данных JSON в информативные и визуально привлекательные графики.
Цена: бесплатно
@prog_tools
👍16👏4🍌2
Бесплатная книга о Py-регулярках
Разработчики Christian Mayer, Zohaib Riaz и Lukas Rieger написали книгу, упрощающую изучение регулярных выражений в рамках Python.
Если кому удобнее учиться по видео, вот видеокурс, аналогичный книге.
#книга
@zen_of_python
Разработчики Christian Mayer, Zohaib Riaz и Lukas Rieger написали книгу, упрощающую изучение регулярных выражений в рамках Python.
Если кому удобнее учиться по видео, вот видеокурс, аналогичный книге.
#книга
@zen_of_python
👍6❤1👏1🍌1
Как сжимают zlib + 3 конкурента
Реддитор провёл бенчмарк четырёх архивирующих библиотек — zlib, lz4, brotli, zstandard на коэффициент сжатия, скорость компрессии / декомпрессии.
Вот результат по первому показателю:
Остальные «пьедесталы» плюс данные о дизайне экспериментов в треде. Сжимали .json.
#факты
@zen_of_python
Реддитор провёл бенчмарк четырёх архивирующих библиотек — zlib, lz4, brotli, zstandard на коэффициент сжатия, скорость компрессии / декомпрессии.
Вот результат по первому показателю:
| Библиотека | Сжатие, разы |
|------------|--------------|
| zlib | 27.84 |
| lz4 | 18.23 |
| brotli | 64.78 |
| zstandard | 43.42 |
Остальные «пьедесталы» плюс данные о дизайне экспериментов в треде. Сжимали .json.
#факты
@zen_of_python
👍3
Задача о подстроке
Получаем две строки
Подстрока формируется из исходной строки путём удаления некоторых символов (может быть, ни одного) без нарушения положения остальных.
Ограничения:
В качестве теста:
#задача
@zen_of_python
Получаем две строки
s
и t
. Напишите функцию проверки: является ли s подстрокой t. Подстрока формируется из исходной строки путём удаления некоторых символов (может быть, ни одного) без нарушения положения остальных.
"ace"
является подстрокой "abcde"
, а "aec"
— нет.Ограничения:
0 <= len(s) <= 100
0 <= len(t) <= 10^4
s
и t
состоят только из строчных английских букв.В качестве теста:
s = "abc"
t = "ahbgdc"
>>> is_substring(s, t)
... true
#задача
@zen_of_python
👍2❤1🍌1
OpenTelemetry: здоровье вашего py-приложения
Доступный англоязычный гайд по настройке телеметрии вашего проекта. Инструмент позволяет:
— собирать логи;
— отслеживать исполнение запросов;
— прослеживать путь конкретного тестового запроса (чтобы найти «бутылочные горлышки»);
— отправлять уведомления о событиях в мессенджер;
— распределенно отслеживать в условиях нескольких микросервисов и проч.
#лучшиепрактики
@zen_of_python
Доступный англоязычный гайд по настройке телеметрии вашего проекта. Инструмент позволяет:
— собирать логи;
— отслеживать исполнение запросов;
— прослеживать путь конкретного тестового запроса (чтобы найти «бутылочные горлышки»);
— отправлять уведомления о событиях в мессенджер;
— распределенно отслеживать в условиях нескольких микросервисов и проч.
#лучшиепрактики
@zen_of_python
🍌3
Поздравляем победителей
Задачу об инверсии строки верно решили:
— Cool and Fun Python (@Python3k);
— Лев Выскубов;
— @sidor0912;
— @lomserman;
— @HackingSection;
— @VasilTerekin (засчитываю, хотя запрошена функция);
— @patriarch_chesslovo;
— @IvanImmortal;
— @Sentiago.
Кратчайшие верные решения предложили @patriarch_chesslovo:
и @HackingSection:
Отдельный респект Cool and Fun Python за разбор своего решения:
Отдельная благодарность @lomserman за создание тестирующей функции:
p.s. Админ подписывается на всех ребятушек, что решают задачи. Если «провалиться» в профили решивших, там полно питонической годноты.
#задача
@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
🔥6🍌2❤1
Фейковые техинтервью и трояны
Если верить статье с xakep.ru, группа корейских IT-компаний приглашает на собеседование на должность фулстэк-разработчика, и под эгидой демонстрации навыков просят клонировать и использовать репозиторий Dev Popper — якобы NPM-расширение.
На деле же при запуске активируется обфусцированный js-скрипт, который в итоге запускает py-скрипт (!) — троян, собирающий:
— данные для входа на ваши сервера;
— историю CLI-команд (ищет креды, опять же);
— возможности для дистанционного развёртывания вредоносного ПО.
Коллеги, с корейскими компаниями пока на собеседования не ходим.
#факты
@zen_of_python
Если верить статье с xakep.ru, группа корейских IT-компаний приглашает на собеседование на должность фулстэк-разработчика, и под эгидой демонстрации навыков просят клонировать и использовать репозиторий Dev Popper — якобы NPM-расширение.
На деле же при запуске активируется обфусцированный js-скрипт, который в итоге запускает py-скрипт (!) — троян, собирающий:
— данные для входа на ваши сервера;
— историю CLI-команд (ищет креды, опять же);
— возможности для дистанционного развёртывания вредоносного ПО.
Коллеги, с корейскими компаниями пока на собеседования не ходим.
#факты
@zen_of_python
😁18🌚1🍌1
Инженер-программист, помни!
Если ты всей душой в майских праздниках, то эксперименты с «пивным» пиком Балмера никто не отменял.
«Каким-то образом Балмер посчитал, что 1,29–1,38‰ алкоголя в крови открывают у него сверхчеловеческие способности к программированию: он выпивал пару литров пива, входил в состояние лёгкого опьянения и мог продуктивно кодить».
Ну если сверхкода в таком состоянии все же не написать, то за «жабистые» таски точно легче браться.
#кек
@zen_of_python
Если ты всей душой в майских праздниках, то эксперименты с «пивным» пиком Балмера никто не отменял.
«Каким-то образом Балмер посчитал, что 1,29–1,38‰ алкоголя в крови открывают у него сверхчеловеческие способности к программированию: он выпивал пару литров пива, входил в состояние лёгкого опьянения и мог продуктивно кодить».
Ну если сверхкода в таком состоянии все же не написать, то за «жабистые» таски точно легче браться.
#кек
@zen_of_python
👍14❤6
tkforge: из Figma в Tkinter
Интересная коллекция компонентов, позволяющая сверстать на канвасе небезызвестной Figma интерфейс, а потом командной строкой перегнать это сразу в Python-код для Tkinter.
#библиотека
@zen_of_python
Интересная коллекция компонентов, позволяющая сверстать на канвасе небезызвестной Figma интерфейс, а потом командной строкой перегнать это сразу в Python-код для Tkinter.
#библиотека
@zen_of_python
👌8🔥2
Сложность структур данных и алгоритмов
Если вы подступились к объёмным данным в проекте, самое время задуматься: а те ли методы и функции вы используете? Какова будет скорость интерпретации и не «повесится» ли программа вообще?
На pythonmorsels.com опубликовали англоязычную статью на 9 минут про виды сложностей (они на графике ниже), и про сравнение встроенных методов списков, очередей (queue), словарей, сетов, класса-счётчика (Counter), кучи и других структур. Самое оно, чтобы аккуратно вьехать в стадию оптимизации своего кода.
Если вам нужно сначала разобраться с понятием Time Complexity, вот доступная статья от основателя Типичного программиста.
#лучшиепрактики
@zen_of_python
Если вы подступились к объёмным данным в проекте, самое время задуматься: а те ли методы и функции вы используете? Какова будет скорость интерпретации и не «повесится» ли программа вообще?
На pythonmorsels.com опубликовали англоязычную статью на 9 минут про виды сложностей (они на графике ниже), и про сравнение встроенных методов списков, очередей (queue), словарей, сетов, класса-счётчика (Counter), кучи и других структур. Самое оно, чтобы аккуратно вьехать в стадию оптимизации своего кода.
Если вам нужно сначала разобраться с понятием Time Complexity, вот доступная статья от основателя Типичного программиста.
#лучшиепрактики
@zen_of_python
👍1
Как в одно слово назвать Django-разработчика?
🏆— Джангист
🦄 — Джангер
👀 — Джангэстро
🌚 — Свое (поделитесь в комментариях)
🏆— Джангист
🦄 — Джангер
👀 — Джангэстро
🌚 — Свое (поделитесь в комментариях)
🏆31👀9🦄9👍2🌚2
Вопрос от подписчика
Задает @Scotch_flip:
"Здравствуйте, у меня такой вопрос:
с помощью tkinter создал окно с кнопками от 1 и до 25, хочу сделать при нажатии кнопки с command меня[ть] цвет рандомно выбранных чисел или же по очереди меня[ть] цвет каждой кнопки , пробовал много разных способов, но увы".
! Пожалуйста, будьте взаимовежливы. Всем нам нужно место, где окажут помощь.
@zen_of_python
Задает @Scotch_flip:
"Здравствуйте, у меня такой вопрос:
с помощью tkinter создал окно с кнопками от 1 и до 25, хочу сделать при нажатии кнопки с command меня[ть] цвет рандомно выбранных чисел или же по очереди меня[ть] цвет каждой кнопки , пробовал много разных способов, но увы".
! Пожалуйста, будьте взаимовежливы. Всем нам нужно место, где окажут помощь.
@zen_of_python