54326
№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy
__init____init__ является методом, который используется для инициализации объектов при создании экземпляров классов. Этот метод называется «конструктором» класса и выполняется автоматически при создании нового объекта данного класса.
Когда вы создаете новый объект путем вызова конструктора класса, передавая ему аргументы, эти аргументы могут быть использованы для установки начальных значений атрибутов объекта. Внутри метода __init__ вы можете определить, какие атрибуты должны быть созданы для объекта и как им присвоены начальные значения.
#для_начинающих
Задача
Напишите функцию Python, чтобы найти отличную пару чисел, произведение которых нечетно из последовательности целочисленных значений.
Python декораторы на максималках. Универсальный рецепт по написанию и аннотированию от мала до велика
Декорирование функций - это, наверное, самая сложная среди базовых и самая простая среди продвинутых фич языка Python.
Смотреть статью
Напишите функцию на Python, которая принимает на вход список чисел и возвращает наибольшую возрастающую подпоследовательность (непоследовательные числа, идущие в порядке возрастания) из исходного списка
Для решения этой задачи используется динамическое программирование. Мы создаем массив dp, где dp[i] представляет собой длину наибольшей возрастающей подпоследовательности, заканчивающейся в nums[i]. Затем мы выполняем двойной цикл, чтобы найти наибольшую длину для каждого элемента. После этого мы определяем саму подпоследовательность, начиная с наибольшей длины и двигаясь обратно по массиву dp.
Пример использования:
python
nums = [3, 12, 5, 8, 10, 2, 1]
result = longest_increasing_subsequence(nums)
print(result) # Output: [3, 5, 8, 10]
[3, 12, 5, 8, 10, 2, 1], которой будет [3, 5, 8, 10], и выведет ее в консоль.
Читать полностью…
Разбиваем видео на n кол-во изображений
Для разбиения видео на n количество изображений вам понадобится использовать библиотеку OpenCV в Python.
В этом примере функция video_to_images принимает путь к видео (`video_path`) и количество желаемых изображений (`frames_count`). Она открывает видеофайл, читает каждый кадр и сохраняет каждый "шаг" кадров как отдельное изображение. Затем функция прекращает обработку, когда необходимое количество изображений сохранено.
Обратите внимание, что код использует целочисленное деление // и целочисленное преобразование int() для обеспечения, чтобы каждое изображение было сохранено через примерно одинаковое количество кадров, чтобы равномерно распределить их по времени видео.
⚠️ Модель работает, но её сложно поддерживать: этапы обработки данных разрознены, обучение нестабильно, результат трудно воспроизвести. Без единого контура управления такие решения быстро теряют ценность.
1 июня в 18:00 МСК приглашаем вас на открытый урок курса «Машинное обучение. Продвинутый уровень».
🦾 На занятии вы разберёте, как с помощью Pipeline объединить подготовку данных, обучение и проверку модели в единую цепочку. Поймёте, как строить составные решения с промежуточными этапами и управлять ими без хаоса. Покажем, как это работает на практике и как применять в реальных задачах.
Вы познакомитесь с преподавателем, увидите формат обучения и сможете задать вопросы.
➡️ Зарегистрируйтесь, чтобы научиться выстраивать устойчивые решения в машинном обучении: https://otus.pw/igEZ/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
argparse
Библиотека argparse является стандартным инструментом для обработки аргументов командной строки в Python. Она позволяет легко определить и обработать аргументы, передаваемые программе при запуске из командной строки.
В данном примере мы просто выводим значения аргументов на экран, но в реальном приложении вы можете использовать их для выполнения конкретных действий, например, чтения входного файла, обработки данных и записи результата в выходной файл.
Cравнение 2 аудиосообщений
Для сравнения двух аудиосообщений в Python нужно использовать библиотеку для анализа звука, например, librosa или PyAudio.
Здесь мы загружаем два файла и вычисляем их характеристики MFCC (Mel Frequency Cepstral Coefficients), которые представляют собой набор коэффициентов, описывающих звуковое пространство. Затем мы вычисляем расстояние между характеристиками с помощью функции dtln из librosa.core. Результат будет выведен в консоль.
Обратите внимание, что для сравнения аудиосообщений нужно, чтобы они имели одинаковую продолжительность и были записаны в одинаковых условиях (например, громкость, обработка шума).
cv3 — делаем OpenCV питоничным
cv3 - обёртка над opencv-python, которая ускоряет написание кода, не сужая функциональность
Смотреть статью
Ищем опечатки
Пакет spellchecker позволяет отыскать ошибки в тексте, а также может предложить варианты исправлений. В примере проходимся по списку из двух слов, из которых одно ('therre') написано с опечаткой. Функция correction замечает это и предлагает одно самое вероятное исправление, а candidates — несколько.
Пакет поддерживает шесть языков.
Документацию можно найти здесь.
В чем разница между is() и == в Python?
Операторы is и == в Python выполняют похожие функции, но работают немного по-разному. И если вы новичок, используете сравнения в коде, стоит понимать разницу. Это поможет реже прибегать к рефакторингу и дебагу.
Смотреть статью
Сокращение ссылок прямо в коде
Иногда возникает необходимость сделать ссылку более короткой. Для этого пригодится библиотека pyshorteners — с помощью трех строк кода и сервиса tinyurl она позволяет быстро создать короткую ссылку.
Сцепление исключений
Сцепление исключений (exception chaining) позволяет сохранять информацию об исключении, которое произошло во вложенном блоке кода, в исключении более высокого уровня. Это полезно для отслеживания причин ошибок и обеспечения более полной информации о том, что произошло.
В примере на картинке, если возникает ZeroDivisionError, мы попадаем в блок except, а затем выполняем вложенный код, который вызывает ValueError. С помощью ключевого слова from мы указываем, что исключение ValueError является следствием (частью) исключения ZeroDivisionError. Таким образом, информация об исключении ZeroDivisionError сохраняется.
#для_продвинутых
Только начинаете в разработке на Python, рабочее окружение собирается на глаз, а проект сложно воспроизвести у коллег?
На открытом уроке разберём, как настроить удобное и предсказуемое окружение для Python-проекта — от структуры приложения до инфраструктуры. Покажем архитектуру типового проекта, разберём, какие компоненты нужны для разработки и как собрать локальную среду, которая повторяет рабочую.
Отдельно рассмотрим сборку Docker-контейнеров и развёртывание в Kubernetes, чтобы вы понимали полный цикл жизни приложения. Вы увидите, как выстроить процесс так, чтобы код работал одинаково у вас, в команде и в рабочей среде. Это базовый навык, без которого невозможно уверенно расти в разработке.
👉 Открытый урок проходит в преддверии старта курса «Python-разработчик» 7 мая в 20:00 МСК. Регистрация: https://otus.pw/eBRf/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Реализуйте алгоритм сортировки слиянием (Merge Sort) на Python. Напишите код и объясните, как работает этот алгоритм. Расскажите о его сложности и возможных оптимизациях.
Объяснение:
Алгоритм сортировки слиянием (Merge Sort) использует стратегию «разделяй и властвуй». Он состоит из двух основных шагов:
Разделение (Divide): Массив разделяется на две равные (при четном числе элементов) или почти равные (при нечетном) части. Этот процесс рекурсивно выполняется для каждой из подпоследовательностей.
Слияние (Merge): Отсортированные подпоследовательности сливаются обратно в один отсортированный массив.
Сложность:
Временная сложность: O(n log n) в худшем, лучшем и среднем случаях.
Пространственная сложность: O(n).
Оптимизации:
— При реализации можно использовать вставочную сортировку для маленьких подмассивов, так как у нее меньшая константа в асимптотике.
— Если массив уже отсортирован, можно добавить проверку и пропустить шаг сортировки.
— Вместо копирования подмассивов при каждом рекурсивном вызове можно использовать вспомогательный массив для слияния, что уменьшит использование памяти.
Отправка электронных писем
Приведенный выше скрипт использует библиотекуSMTP, , чтобы отправлять электронные письма указанным получателям. Реализация может быть изменена в зависимости от варианта использования.
В приведенной выше реализации скрипт использует данные отправителя и получателя, а также тему и текст сообщения. Затем скрипт подключается к SMTP-серверу Gmail, форматирует сообщение и отправляет его с помощью метода sendmail() . Наконец, скрипт выводит сообщение, указывающее, что электронное письмо было успешно отправлено, и отключается от SMTP-сервера.
Подробнее про smtplib можно почитать здесь.
Ход короля
Даны две различные клетки шахматной доски. Напишите программу, которая определяет, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки.
Программа должна вывести «YES», если из первой клетки ходом короля можно попасть во вторую, или «NO» в противном случае.
Бэкенд-разработка и архитектура программных систем
Сложные IT-продукты держатся на бэкенде: он отвечает за логику сервиса, работу с данными, API, надёжность и масштабирование.
На онлайн-магистратуре НИУ ВШЭ и Нетологии «Бэкенд-разработка и архитектура программных систем» готовят специалистов, которые умеют проектировать, разрабатывать и развивать серверные приложения.
В программе — фундаментальная инженерная база и современный стек: Python, реляционные и нереляционные базы данных, веб-разработка, архитектура ПО, тестирование, MLOps. На втором курсе можно углубиться в один из языков: Go, Java или Rust.
Обучение построено вокруг практики: проектные семинары, семинары наставника, мастер-классы и практикумы с экспертами IT-компаний. Студенты работают над проектами для портфолио, а ВКР становится полноценным итоговым проектом.
Формат — онлайн, занятия проходят вечером в будни и днём в субботу. После обучения выпускники получают диплом магистра НИУ ВШЭ по направлению «Программная инженерия».
Подробнее о программе → по ссылке
Реклама. ООО "Нетология" ОГРН 1207700135884 Erid: 2VSb5yBJAZx
Узнаем разницу в днях между датами представленными в виде строк
В данном коде мы используем функцию strptime из модуля datetime, чтобы преобразовать строки в объекты datetime. Затем мы вычисляем разницу между датами с помощью оператора - и получаем абсолютное значение разницы с помощью функции abs. Наконец, мы получаем разницу в днях, используя атрибут days разницы объекта.
hYPerSonic
hYPerSonic – это фреймворк на языках Python и C. Используется для разработки и эксплуатации конвейеров обработки звука, предназначенных для управления в реальном времени. Эта структура является низкоуровневой, в которой подсчитывается каждый байт, и это также включает объекты для звуковой карты, фильтрует операции с памятью, file – io и осцилляторы. Эта структура работает в операционных системах Linux и OSX.
https://github.com/lwcook/hypersonic-simulation
Усыпляем программу
Иногда возникает необходимость остановить выполнение программы, чтобы можно было выполнить несколько других операций, или просто из-за требуемой утилиты. В такой ситуации может пригодиться функция sleep(), которая обеспечивает точный и гибкий способ остановки потока кода на любой период времени.
В нашем примере время начала и время окончания будут напечатаны с задержкой в 6 секунд.
Удаляем файл из папки на компьютере
Для удаления файла из папки на ПК в Python можно использовать модуль os.
Здесь сначала мы импортируем модуль os. Затем указываем полный путь к удаляемому файлу в переменной file_path. С помощью функции os.path.exists() проверяем, существует ли файл по указанному пути.
Если файл существует, мы удаляем его с помощью функции os.remove(). В противном случае выводим информацию, что такой файл не найден.
Узнаем сколько раз встречается каждая буква в предложении
Код представлен на картинке.
Извлекаем имя из адреса электронной почты
Для извлечения имени из адреса электронной почты до символа ‘@‘ можно использовать регулярные выражения.
Это регулярное выражение начинает поиск с начала строки с помощью символа "^" и находит любую комбинацию строчных букв, цифр, дефисов, подчеркиваний, точек и знака минуса. Затем выражение находит символ "@" и останавливается.
Узнаем сколько свободной памяти на компьютере
Для того, чтобы узнать сколько свободной памяти доступно на компьютере с помощью Python можно использовать модуль psutil.
Метод virtual_memory() возвращает объект с информацией о памяти системы. Свойство available объекта содержит количество свободной памяти в байтах.
Что нам стоит диаграмму в Python построить: 5 вариантов привлекающей внимание визуализации данных и кое-что ещё
Диаграммы помогают визуализировать как простые, так и самые сложные наборы данных. При этом диаграмм — множество видов, у каждого есть свои достоинства и недостатки. О наиболее эффектных и эффективных, реализуемых с Python, мы решили рассказать в сегодняшней подборке.
Смотреть статью
Функция tell()
Функция tell() используется для получения текущей позиции указателя в потоке данных. Она применяется чаще всего при работе с файлами, но также может использоваться с другими типами потоков, например, сокетами или консольным вводом.
Возвращаемое значение: целое число, указывающее положение указателя в байтах от начала потока.
Аргументы: tell() не принимает никаких аргументов.
#для_начинающих
Метод math.perm()
Метод math.perm() в Python возвращает количество способов выбрать k элементов из n элементов с порядком и без повторения.
Синтаксис:
math.perm(n, k)
n: Количество элементов из которых выбираются k элементов.k: Количество элементов, которые выбираются.
Метод swapcase()
Метод swapcase() в Python является встроенным методом строк (str), который создает новую строку, меняя регистр каждой буквы в исходной строке. Если буква была в верхнем регистре, она будет преобразована в нижний регистр, и наоборот.
Результатом будет строка 'hELLO, wORLD!'.
#для_начинающих
Ruff
Ruff — это новый, быстроразвивающийся линтер Python кода, призванный заменить flake8 и isort.
Основным преимуществом Ruff является его скорость. Ruff в 10-100 раз быстрее аналогов (Линтер написан на Rust). В сравнении с flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear и т.д.). Также Ruff совместим с Black «из коробки».
Ruff может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort.