Python Community
13K subscribers
1.25K photos
28 videos
15 files
726 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
Data Science — это про настоящее.

Алгоритмы Google уже помогают врачам на 9,4% точнее определять болезни. Беспилотники от Waymo сами передвигаются по дорогам, а нейронные сети вычисляют преступников в толпе.

Это востребовано. В 2015-м технологии Big Data использовали только 17% компаний. В 2020-м — уже 55%.

Это увлекательно. Тут нет рутинных задач. Вы будете работать на стыке IT и аналитики: предсказывать события и прогнозировать рост прибыли на основе данных.

Это перспективно. По данным HH, в России 600+ компаний ищут дата-сайентистов, включая Сбербанк, Яндекс и «Тинькофф».

Data Science реально изучить. Стать специалистом по анализу данных и machine learning можно на курсе «Профессия Data Scientist PRO» от Skillbox.

Каждый, кто купит в ноябре курс, который участвует в ЧП, получит три скидки от партнеров:

• Asus — скидка 10% на ноутбуки.
• Литрес — 25% на все книги + 2 книги в подарок из подборки.
• Clinique — скидка 40% на все, кроме новогодних коллекций.

Переходите: https://clc.to/3TPK5w и приобретайте курс со скидкой до 60%
⚡️ Аннотация типов. Часть 1

Поскольку Python — это язык с динамической типизацией, то не всегда программа может просчитать, что будет на входе функции.

Тогда на помощь приходит аннотация, говорящая, что на вход должен прийти вот такой тип.

И оно никак не влияет на работу программы, как понятно из примера выше. Оно несёт смысл только для программистов и IDE.

Создаются они с помощью ":" после имени переменной. А возвращаемое значение функции — с помощью "->" в конце её определения.

Если вам стало интересно, можете посетить страницу документации.

#теория
⚡️ Задачка с собеседования | #Medium

Условие:

Вам необходимо узнать, какой тип аннотирован у переменной. На вход идёт строка с определением переменной, на выход — строка-тип. Будут использоваться самые примитивные типы (str, int, float). Если тип не определён, возвращает None.

Примеры:

get_annotation("a: str = 'b: int = 1'") -> 'str'
get_annotation('a: int') -> 'int'
get_annotation("a = 'b: int = 1'") -> None
get_annotation('a = 1') -> None

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
⚡️ Универсальный инструмент, пользу которого оценит любой участник этого канала.

В какой бы сфере IT вы ни были заняты, потребность в быстром, удобном, а главное, в большинстве своем, бесплатном графическом редакторе рано или поздно возникает у всех.

Один из наиболее подходящих по всем вышеперечисленным критериям сервис - это Canva. Если вы еще не пробовали его в действии, пришло время это исправить!

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

👉 Во-вторых, не обязательно ничего скачивать или платить за подписку. Все самые необходимые инструменты доступны бесплатно в веб-версии. А еще есть удобный софт для телефона, ноутбука или планшета, на любой ОС.

👉 В-третьих, не нужно быть графическим дизайнером, чтобы начать работу. Все редактирование очень интуитивно, на базе интерфейса drag-n-drop.

А еще любой проект можно сохранить и вернуться к нему в любое удобное время, с любого другого устройства. Отличная новость для тех, кто ценит мобильность и свое время.

Хотите попробовать? Переходите по ссылке — https://fas.st/KB401
⚡️ Ответ на предыдущую задачу
⚡️ Работаем с архивами

Если вам необходимо считать данные с zip архива, то можете воспользоваться модулем zipfile.

ZipFile(file, mode='r') — открывает архив для чтения/записи (зависит от mode). После этого вы можете проводить с ним такие операции:

ZipFile.open(name, mode='r')
— позволяет открыть файл внутри архива.

ZipFile.extractall(path=None) — извлекает все файлы и папки в директорию path.

Поскольку модуль работает с файловой системой, его необходимо закрывать, используя close() или оператор with.
⚡️ Задачка с собеседования | #Medium

Условие:

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

Примеры:

unique_char('python') -> 0
unique_char('pythonTop') -> 1
unique_char('aabb') -> -1

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Встроенные функции в Python

Если вы хоть раз писали hello world, значит ими точно пользовались. Но print — не единственная встроенная функция. Их, приблизительно, 71 штука.

float(), int(), list(), set(), str(), tuple(), dict() — основные типы в Python: список, строка, кортеж, словарь.

max(), min(), abs() — возвращают максимальное, минимальное число из списка. А последняя функция — абсолютное число.

zip(), enumerate(), reversed() — три отличных помощника при работе с циклами.

Вряд ли получится уместить все функции в одну статью, да и необходимости в этом нет, если всё можно найти в документации.

#теория
⚡️ Классы, хранящие данные

Если вы писали какие-либо системы, то вам точно было необходимо передавать данные между ними в классах. Чтобы упростить создание таких классов, разработчики придумали dataclass.

Это декоратор, переопределяющий __init__, __repr__ и другие, на основе переменных, определённых внутри класса.

Как видно из примера выше, Point не имеет никаких методов для инициализации или вывода, но они переопределены. Это напоминает структуры из си-подобных языков.

Если вам стало интересно, можете почитать подробнее в документации.

#миниурок #dataclass
⚡️ Задачка с собеседования | #Easy

Условие:

Вам необходимо сделать красивый и читаемый вывод телефона. На вход идёт строка с номером, а возвращает функция номер в таком формате: (000) 000 0000

Примеры:

format_phone('0000000000') -> '(000) 000 0000'
format_phone('8005553535') -> '(800) 555 3535'
format_phone('1234567890') -> '(123) 456 7890'

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Аннотация типов. Часть 2

В предыдущей части мы разобрали, как работать с базовыми типами (int, float, str), но что, если функция принимает что-то потяжелее (list[float], dict) или может возвращать не один тип?

В таком случае, для коллекций в модуле typing существуют специальные типы, такие как List (в Python3.9 можно использовать встроенный list), Tuple или Dict.

А если функция возвращает несколько типов? Тогда в модуле стоит использовать Union, оповещающий об использовании нескольких типов. Если же это один любой тип и None, то лучше использовать Optional.

Если что-то не понятно (а вам, скорее всего, непонятно будет всё, потому что тема не самая простая), посетите страницу документации и поизучайте её какое-то время.

#теория
Что выведет код выше?
Anonymous Quiz
8%
None
32%
2
36%
3
17%
Ошибку
7%
Узнать ответ
⚡️ Взаимодействуем с JSON

JSON
— текстовый формат для передачи данных. Внутри него удобно хранить данные, в некоторых случаях — настройки приложения. Работать с ним можно с помощью модуля json.

json.loads(str) — переводит строку в объект Python, например, в disct или list.

json.dumps(obj) — переводит объект в строку JSON. Если добавить sort_keys=True и indent=4, то можно получить красивый вывод.

Если вам необходим больший функционал, то посетите страницу документации.

#миниурок #json