💻 Рассказывали вам про задачи на Yandex Cup 2023. В финале команда Яндекса также решила совместить IT и искусство. Пространство было оформлено в стиле демосцены — субкультуры, связанной с компьютерным искусством и киберкультурой, и сами задачи также были тематическими.
Один из запоминающихся арт-объектов соревнования: музыкальный перформанс “Код степи”, созданный участниками лейбла qazaq indie — Балхаш снится, Samrattama, — и другими независимыми художниками, где объединились элементы казахстанской культуры и технологий. Код, который писали участники, был синтезирован в звук и стал частью музыкального произведения.
Получилось очень атмосферно. Было ощущение, что смотришь не трансляцию соревнования, а стрим из киберпанк-будущего. Кстати, в процессе решения задач, участники могли послушать доклады от финалистов ML-трека. Советую посмотреть эту часть, если любите участвовать в IT-соревнованиях, тут над организацией прямо заморочились.
Один из запоминающихся арт-объектов соревнования: музыкальный перформанс “Код степи”, созданный участниками лейбла qazaq indie — Балхаш снится, Samrattama, — и другими независимыми художниками, где объединились элементы казахстанской культуры и технологий. Код, который писали участники, был синтезирован в звук и стал частью музыкального произведения.
Получилось очень атмосферно. Было ощущение, что смотришь не трансляцию соревнования, а стрим из киберпанк-будущего. Кстати, в процессе решения задач, участники могли послушать доклады от финалистов ML-трека. Советую посмотреть эту часть, если любите участвовать в IT-соревнованиях, тут над организацией прямо заморочились.
Валидаторы данных
Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.
Модуль
Помимо этого,
#python #validators
Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.
Модуль
validators
позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок.Помимо этого,
validators
позволяет также работать с ipv4
, ipv6
, mac
адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.#python #validators
Паттерн проектирования Singleton
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
В примере мы проверяем, есть ли значение у атрибута
То есть при вызове конструктора класса
#классы #паттерны
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
__new__
вызывается для создания экземпляра класса, перед вызовом __init__
. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).В примере мы проверяем, есть ли значение у атрибута
instance
. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.То есть при вызове конструктора класса
Singleton
, будет возвращаться один и тот же объект из памяти.#классы #паттерны
Работа с PDF файлами используя PyPDF2
В этом посте, вы узнаете, как работать с PDF-файлами в Python.
Пример кода:
В этом примере мы открываем PDF-файл, используя PyPDF2, извлекаем информацию о количестве страниц и тексте с первой страницы. Затем мы создаем новый PDF-файл, добавляем в него первую страницу и сохраняем его под именем "new_document.pdf".
PyPDF2 - это мощный инструмент для работы с PDF-документами в Python. Он предоставляет возможности для чтения, создания и манипулирования PDF-файлами, что делает его отличным выбором для автоматизации задач, связанных с обработкой документов в этом формате.
#python #pypdf2
В этом посте, вы узнаете, как работать с PDF-файлами в Python.
PyPDF2
предоставляет функциональность для работы с PDF-файлами в Python
, позволяя автоматизировать процессы обработки и анализа документов в формате PDF.Пример кода:
import PyPDF2
with open('example.pdf', 'rb') as file:
pdf_reader = PyPDF2.PdfReader(file)
num_pages = len(pdf_reader.pages)
print(f"Количество страниц в PDF: {num_pages}")
first_page_text = pdf_reader.pages[0].extract_text()
print("Текст с первой страницы:")
print(first_page_text)
pdf_writer = PyPDF2.PdfWriter()
pdf_writer.add_page(pdf_reader.pages[0])
with open('new_document.pdf', 'wb') as new_file:
pdf_writer.write(new_file)
print("Обработка PDF завершена.")
В этом примере мы открываем PDF-файл, используя PyPDF2, извлекаем информацию о количестве страниц и тексте с первой страницы. Затем мы создаем новый PDF-файл, добавляем в него первую страницу и сохраняем его под именем "new_document.pdf".
PyPDF2 - это мощный инструмент для работы с PDF-документами в Python. Он предоставляет возможности для чтения, создания и манипулирования PDF-файлами, что делает его отличным выбором для автоматизации задач, связанных с обработкой документов в этом формате.
#python #pypdf2
Хеширование в Python используя hashlib
Библиотека
Пример кода:
Библиотека
#python #hashlib
Библиотека
hashlib
предоставляет алгоритмы хеширования, которые позволяют создавать уникальные хеш-суммы для данных. Это полезно для проверки целостности файлов, хранения паролей в безопасной форме и других задач безопасности данных.Пример кода:
import hashlibВ этом примере мы используем алгоритм
# Пример хеширования строки с использованием SHA-256
data_to_hash = "Hello, World!"
hashed_data = hashlib.sha256(data_to_hash.encode()).hexdigest()
print(f"Исходные данные: {data_to_hash}")
print(f"Хеш-сумма (SHA-256): {hashed_data}")
SHA-256
из библиотеки hashlib
для создания хеш-суммы строки "Hello, World!". Результат выводится в шестнадцатеричном формате.Библиотека
hashlib
является одним из лучших инструментов для обеспечения безопасности данных в Python
. Путем использования различных алгоритмов хеширования, таких как MD5
, SHA-256
и других, вы можете обеспечить целостность данных и повысить уровень безопасности ваших приложений.#python #hashlib
🌐 Копирование веб-содержимого в Python с библиотекой pywebcopy
Библиотека
Пример кода:
В данном примере используется функция
Библиотека💻
#python #pywebcopy
Библиотека
pywebcopy
облегчает автоматизацию процесса загрузки веб-содержимого, что может быть полезным при создании веб-скраперов, загрузчиков или других приложений, требующих копирования данных из Интернета.Пример кода:
from pywebcopy import save_webpage
url = 'https://www.example.com'
target_folder = 'path/to/folder'
save_webpage(url, target_folder)
В данном примере используется функция
save_webpage
для копирования веб-содержимого указанной веб-страницы (url) в указанную целевую папку (target_folder).Библиотека
pywebcopy
предоставляет простой и удобный способ копирования веб-содержимого прямо из Python
. Она может быть полезна при создании скриптов для загрузки данных с веб-страниц, автоматизации сбора информации или создании зеркал сайтов. #python #pywebcopy
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с YAML-Файлами в Python с Помощью Библиотеки PyYAML
Результат (файл
В этом примере мы используем
Библиотека🐍
#python #yaml #pyyaml
PyYAML
позволяет эффективно работать с файлами в формате YAML (YAML Ain't Markup Language)
, который широко используется для конфигураций, настроек и обмена данными в структурированной форме.import yaml
data_to_write = {'name': 'John Doe', 'age': 30, 'city': 'Example City'}
with open('example.yaml', 'w') as file:
yaml.dump(data_to_write, file, default_flow_style=False)
with open('example.yaml', 'r') as file:
loaded_data = yaml.safe_load(file)
print(f"Загруженные данные: {loaded_data}")
Результат (файл
example.yaml
):age: 30
city: Example City
name: John Doe
В этом примере мы используем
PyYAML
для записи словаря data_to_write
в файл example.yaml
и затем загружаем данные из этого файла обратно в переменную loaded_data
.Библиотека
PyYAML
предоставляет удобные средства для работы с данными в формате YAML
в Python
. Будь то сохранение конфигураций, обмен структурированными данными или другие сценарии, где YAML
имеет преимущество, PyYAML
обеспечивает легкость в использовании и читаемый код#python #yaml #pyyaml
Please open Telegram to view this post
VIEW IN TELEGRAM
Все сервисы Норникеля для работников, собранные в суперапе «Суперника» — нашли отклик в сердцах работников, ведь приложение уже используют 40 тысяч человек из 22 городов России.
Приложение оказалось крайне полезным, потому что у 75% сотрудников нет ПК на рабочем месте. Суперап доступен на любом мобильном устройстве, а также в десктоп-версии с любого компьютера. В личном кабинете можно узнать информацию об отпуске, стаже работы. Есть возможность настроить новостную ленту, получить доступ к документам и справкам, узнать о корпоративных мероприятиях и оставить отклик. Также можно общаться между собой в чатах на звонках и видеосвязи.
В основе «Суперники» микросервисная архитектура. Для быстрой и бесшовной работы приложения потребовалось разработать, согласовать, прописать и настроить 3500 правил. Все сервисы работают независимо друг от друга, а это более тысячи различных соединений.
Приложение оказалось крайне полезным, потому что у 75% сотрудников нет ПК на рабочем месте. Суперап доступен на любом мобильном устройстве, а также в десктоп-версии с любого компьютера. В личном кабинете можно узнать информацию об отпуске, стаже работы. Есть возможность настроить новостную ленту, получить доступ к документам и справкам, узнать о корпоративных мероприятиях и оставить отклик. Также можно общаться между собой в чатах на звонках и видеосвязи.
В основе «Суперники» микросервисная архитектура. Для быстрой и бесшовной работы приложения потребовалось разработать, согласовать, прописать и настроить 3500 правил. Все сервисы работают независимо друг от друга, а это более тысячи различных соединений.
Создание скриншотов с использованием модуля pyscreenshot
Модуль
Для захвата изображения используется метод
Этот модуль оказывается особенно полезным, например, при логировании скриптов, использующих
#python #pyscreenshot
Модуль
pyscreenshot
, обеспечивая кросс-платформенную функциональность, позволяет легко создавать скриншоты как всего экрана, так и его отдельных частей. Для работы этого модуля необходимо установить библиотеку Pillow
.Для захвата изображения используется метод
grab
, для его отображения – show
, а для сохранения – save
. В метод grab
можно также передать аргумент bbox
, чтобы ограничить захват только определенной областью экрана.Этот модуль оказывается особенно полезным, например, при логировании скриптов, использующих
Selenium
. Selenium
может открывать браузер и выполнять различные операции в нем, и использование pyscreenshot
позволяет создавать скриншоты для последующего анализа и отладки.#python #pyscreenshot
Получение геолокации по IP с использованием ip2geotools
Недавно я обнаружил увлекательный пакет
Пример кода для получения информации по IP с использованием класса
Этот код использует метод
#python #ip2geotools
Недавно я обнаружил увлекательный пакет
ip2geotools
, который обеспечивает возможность получения геолокации по IP из различных баз данных. Пример кода для получения информации по IP с использованием класса
DbIpCity
, представляющего некоммерческую базу данных, выглядит следующим образом:from ip2geotools.databases.noncommercial import DbIpCity
def get_ip_geolocation(ip_address):
try:
response = DbIpCity.get(ip_address, api_key='free')
city = response.city
region = response.region
country = response.country
latitude = response.latitude
longitude = response.longitude
print(f"Информация о местоположении для IP {ip_address}:")
print(f"Город: {city}")
print(f"Регион: {region}")
print(f"Страна: {country}")
print(f"Широта: {latitude}")
print(f"Долгота: {longitude}")
except Exception as e:
print(f"Ошибка при получении информации по IP {ip_address}: {e}")
ip_address_to_check = '8.8.8.8'
get_ip_geolocation(ip_address_to_check)
Этот код использует метод
get
из класса DbIpCity
для получения информации о местоположении по заданному IP-адресу.
Помните о том, что для использования некоторых баз данных может потребоваться API-ключ.#python #ip2geotools
Настройка ширины текста с использованием модуля textwrap
Приведем пример использования:
Результат выполнения кода будет следующим:
Как видно из примера, слова переносятся на новые строки, при этом ничего не обрывается на полуслове. Это обеспечивает читабельность и красивый внешний вид текста при заданной ширине.
#python #textwrap
textwrap
предоставляет функции для форматирования текста, делая его более читаемым и приятным для восприятия. Одной из таких функций является fill
, которая позволяет настраивать ширину текста в символах, обеспечивая корректное перенос слов на новые строки.Приведем пример использования:
import textwrap
# Исходный текст
original_text = "Мощные функции модуля textwrap обеспечивают красивое форматирование текста, а функция fill позволяет задать ширину текста в символах."
# Задаем ширину текста в 30 символов
width = 30
# Применяем функцию fill для форматирования текста
formatted_text = textwrap.fill(original_text, width)
print(formatted_text)
Результат выполнения кода будет следующим:
Мощные функции модуля
textwrap обеспечивают
красивое форматирование
текста, а функция fill
позволяет задать ширину
текста в символах.
Как видно из примера, слова переносятся на новые строки, при этом ничего не обрывается на полуслове. Это обеспечивает читабельность и красивый внешний вид текста при заданной ширине.
#python #textwrap
Придаем человеческий вид данным с помощью пакета humanize
Открыл для себя потрясающий инструмент — пакет
Например, сложный объект
Однако, что еще более впечатляет, — помимо английского, этот пакет поддерживает множество других языков, включая русский. Настоятельно рекомендую ознакомиться с их документацией, где представлено множество интересных функций.
Пример использования в
В данном примере мы используем функции
#python #humanize
Открыл для себя потрясающий инструмент — пакет
humanize
, который превращает числа и даты в понятный для человека текст. Вместо того чтобы изобретать велосипеды для таких задач, этот пакет позволяет справиться с ними буквально в одной строке.Например, сложный объект
timedelta
может быть преобразован в "2 дня, 1 час и 33.12 секунд
". Однако, что еще более впечатляет, — помимо английского, этот пакет поддерживает множество других языков, включая русский. Настоятельно рекомендую ознакомиться с их документацией, где представлено множество интересных функций.
Пример использования в
Python
:import humanize
from datetime import timedelta
time_difference = timedelta(days=2, hours=1, seconds=33.12)
humanized_time = humanize.naturaldelta(time_difference)
print(humanized_time)
# Output: 2 days, 1 hour and 33.12 seconds
number_to_humanize = 500
humanized_number = humanize.intword(number_to_humanize)
print(humanized_number)
# Output: 5.00 x 10²
В данном примере мы используем функции
naturaldelta
и intword
из пакета humanize
для получения читаемых представлений временного интервала и числа соответственно.#python #humanize
Легкий веб-фреймворк
Несмотря на свою минималистичность,
После запуска подобного примера можете перейти в браузере по адресу
#python #bottle
Bottle
– это быстрый, простой и легкий микро-веб-фреймворк WSGI
для Python
. Он распространяется как единый файловый модуль и не имеет никаких зависимостей, кроме стандартной библиотеки Python
.Несмотря на свою минималистичность,
Bottle
предоставляет довольно широкие возможности, которых на 100% хватает для мелких и средних проектов. Вот список основных возможностей: routing
, templates
, POST-routing
, обработка форм, cookies
и сервер.После запуска подобного примера можете перейти в браузере по адресу
localhost:5000/hello/world
и посмотреть на результат, полученный из всего пяти строк кода.#python #bottle
Читаем текст с картинки используя Tesseract от Google
Чтобы извлечь текст из изображения, используйте метод
Рекомендуется использовать библиотеку
Пример кода:
#python #pytesseract
Google
разработал систему Tesseract
для извлечения текста из изображений через оптическое распознавание символов.Pytesseract
- это удобная оболочка для системы Tesseract
, облегчающая её использование.Чтобы извлечь текст из изображения, используйте метод
image_to_string
. Для работы с русским текстом укажите аргумент lang
как 'rus'
.Рекомендуется использовать библиотеку
pillow
для открытия изображений, хотя можно также просто указать путь к файлу.Пример кода:
from PIL import Image
import pytesseract
# Открываем изображение с помощью Pillow
image = Image.open('image.jpg')
# Используем pytesseract для извлечения текста
text = pytesseract.image_to_string(image, lang='rus')
print(text)
#python #pytesseract
Функция reduce
В
Примером работы
#python #functools
В
Python
модуль functools
открывает доступ к функциональным возможностям языка. Одной из замечательных функций в этом модуле является reduce
, которая эффективно уменьшает коллекцию данных, последовательно применяя к ним заданную функцию и сохраняя промежуточные результаты.Примером работы
reduce
может служить последовательное умножение чисел: сначала 1 умножается на 2, затем полученный результат умножается на 3, и так далее.#python #functools
Отправка электронных писем через SMTP в Python
Для установления соединения с почтовым сервером используется класс
Авторизация на сервере осуществляется с использованием метода
Для отправки электронных писем используется метод
Однако стоит учесть, что некоторые почтовые сервисы могут иметь ограничения и требования к безопасности. Например, для работы с Gmail может потребоваться включить поддержку "доступа к ненадежным приложениям" и настроить двухфакторную аутентификацию.
Пример использования
#python #smtp #smtplib
SMTP (Simple Mail Transfer Protocol)
- это протокол, позволяющий отправлять электронные письма. В стандартной библиотеке Python
доступен пакет smtplib
, который реализует функциональность SMTP
.Для установления соединения с почтовым сервером используется класс
SMTP_SSL
, который также обеспечивает шифрование данных. Для этого классу передаются адрес сервера и порт.Авторизация на сервере осуществляется с использованием метода
login
, в который передаются логин и пароль пользователя.Для отправки электронных писем используется метод
sendmail
, который принимает адрес отправителя, адрес получателя и текст сообщения. Важно отметить, что в конце написаного кода следует закрыть соединение с сервером с помощью метода quit()
.Однако стоит учесть, что некоторые почтовые сервисы могут иметь ограничения и требования к безопасности. Например, для работы с Gmail может потребоваться включить поддержку "доступа к ненадежным приложениям" и настроить двухфакторную аутентификацию.
Пример использования
smtplib
для отправки электронного письма:import smtplib
smtp_server = "smtp.example.com"
smtp_port = 465 # SSL-порт
smtp_username = "your_username"
smtp_password = "your_password"
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
server.login(smtp_username, smtp_password)
from_email = "[email protected]"
to_email = "[email protected]"
subject = "Тема письма"
message = "Текст письма"
server.sendmail(from_email, to_email, f"Subject: {subject}\n\n{message}")
server.quit()
#python #smtp #smtplib
Работа с методом str.replace() в Python
Метод принимает два основных аргумента: первый - это подстрока, которую нужно заменить в исходной строке, а второй - это подстрока, на которую происходит замена.
Кроме того, существует третий необязательный аргумент, определяющий количество замен старой подстроки на новую. Если он не указан, метод заменяет все вхождения.
#python #replace
Python
предлагает множество удобных встроенных методов для работы со строками. Один из таких методов - str.replace()
, который используется для замены частей строки.Метод принимает два основных аргумента: первый - это подстрока, которую нужно заменить в исходной строке, а второй - это подстрока, на которую происходит замена.
Кроме того, существует третий необязательный аргумент, определяющий количество замен старой подстроки на новую. Если он не указан, метод заменяет все вхождения.
#python #replace
Делаем планировщик задач
К моему удивлению, далеко не все знают про пакет
Основной его плюс в том, что он максимально интуитивный и имеет гибкий функционал. А еще
Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах.
#python #schedule
К моему удивлению, далеко не все знают про пакет
schedule
, который позволяет планировать задачи и повторять их через промежуток времени. Основной его плюс в том, что он максимально интуитивный и имеет гибкий функционал. А еще
schedule
не требует внешних зависимостей и сам в целом легковесный. Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах.
#python #schedule
Управление лимитом рекурсии в Python
В
Однако, используя модуль
В большинстве случаев предпочтительнее использовать итеративные подходы, такие как циклы, вместо рекурсии.
#python #recursion
В
Python
отсутствует оптимизация хвостовой рекурсии, что часто приводит к ошибке RecursionError
при разработке рекурсивных алгоритмов.Однако, используя модуль
sys
, можно узнать и даже изменить максимально допустимую глубину рекурсии. Несмотря на это, следует быть осторожным с увеличением лимита, так как каждый вызов рекурсии потребляет значительное количество памяти.В большинстве случаев предпочтительнее использовать итеративные подходы, такие как циклы, вместо рекурсии.
#python #recursion