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

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Переводим объект в строку

Думаем, вы понимаете, что практически невозможно передать объект по http(s) протоколу в его чистом виде. Поэтому придумали marshmallow — модуль, переводящий объекты в текст и обратно.

Установка: pip install marshmallow

Schema
, fields — самое важное, что вам надо знать. Schema — базовый класс для всех схем с данными. Он состоит из полей, которые создаются с помощью fields.

После вызываем у схемы dump и load, методы, позволяющие переводить строку в объект и обратно.

Это, конечно, ещё не всё. Подробнее о модуле можете вы почитать тут.

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

Условие:

Вам необходимо написать функцию, которая переводит hls в rgb. Результат округлить до сотых.

Примеры:

convert_to_rgb(1, 1, 1) -> (1, 1.0, 1.0)
convert_to_rgb(0.9, 0.5, 0.5) -> (0.75, 0.25, 0.55)
convert_to_rgb(0.72, 0.624, 0.48) -> (0.56, 0.44, 0.8)

Подсказка: почитайте про модуль colorsys

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

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Кэшируем результат работы метода

Кэширование — действительно полезная вещь, если у вас есть тяжёлые математические операции. Оно уменьшает использование процессора, но потребляет ОЗУ.

Декораторы cache и cached_property как раз созданы для этой задачи. Они создают словарь по типу «Входные данные : результат» и сохраняют туда результат работы функции.

cached_property — это то же самое, что и @cache @property. И, поскольку это свойство, используется только в классах.

Если вы пользуетесь версией старее python 3.9, то воспользуйтесь декоратором lru_cache.

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

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

Условие:

В этот раз вам необходимо узнать, является ли число — числом Армстронга?

Примеры:

num_armstrong(7) -> True
num_armstrong(371) -> True # 3^3 + 7^3 + 1^3 = 371
num_armstrong(120) -> False

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

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Open и режимы чтения/записи

Функция open используется для работы с файловой системой и у неё есть несколько режимов работы. О них мы сейчас и поговорим.

r — открывает файл для чтения и только. w — открывает файл для записи, но перед этим полностью его очищает.

x — создаёт новый файл или выдаёт ошибку, если он уже существует. a — открывает файл для записи добавляя в конец данные. Выдаёт ошибку, если файла не существует.

+ — дополнение, открывает файл для чтения и записи. Разница между w+ и r+ в том, что в первом случае файл очищается.

b, t — открывает файл в бинарном или текстовом режиме. То есть позволяет работать с байтами или с текстом. По умолчанию — t.

#теория
⚡️ Тестируем код

Тестирование — очень важный процесс при создании приложения. Оно помогает избежать ошибок при изменение кода. Делать всё ручками — очень долго, поэтому воспользуемся unittest.

Первым делом нам надо создать класс, который будет тестировать функционал, и унаследовать его от TestCase (или другого класса, зависит от ваших потребностей).

После — создаём парочку функций, начинающихся с test, и сравниваем результат работы используя assert*.

Более подробную информацию можно посмотреть на странице документации.

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

Условие:

Необходимо перевести hex строку в rgb. Функция принимает строку с hex, а возвращает кортеж с тремя элементами: r, g ,b. Входные данные всегда будут правильные, их проверять не нужно.

Примеры:

hex_to_rgb('ffffff') -> (255, 255, 255)
hex_to_rgb('000000') -> (0, 0, 0)
hex_to_rgb('12A2B6') -> (18, 162, 182)

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

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Генерируем пароли

Знаете, в чём проблема модуля random? Он генерирует псевдослучайные числа. То есть, зная некоторую информацию, вы можете предсказать результат работы.

Но разработчики решили и эту проблему. В python 3.6 они добавили модуль secrets, который должен использоваться для криптографии.

secrets.choice(seq) — выбирает случайные значения из последовательности.

token_bytes, token_hex, token_urlsafe — генерирует случайный токен, состоящий из битов, строки с 16-ричными значениями или случайными символами, доступными для передачи по URL.

#миниурок #secrets
⚡️ Используем вики

wikipedia
— удобная библиотека, которая создаёт запрос и обрабатывает ответ.

Установка: pip install wikipedia

search(req)
— выполняет поиск по википедии и возвращает список с возможными результатами.

page(req) — находит страницу по запросу req, возвращает класс WikipediaPage.

summary(req) — возвращает краткую информацию по искомому материалу.

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

Условие:

Вам нужно отсортировать список с оценками на основе английской системы. Всего 5 символов, в порядке убывания: A, B, C, D, F.

Примеры:

sort_grades(['A', 'B', 'C', 'C', 'F', 'A']) -> ['F', 'C', 'C', 'B', 'A', 'A']
sort_grades(['b', 'c', 'C', 'f', 'A']) -> ['F', 'C', 'C', 'B', 'A']
sort_grades([]) -> []

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

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Создаём уникальные идентификаторы

UUID
— стандарт, позволяющий задать уникальный номер. Например, для 10 триллионов uuid, шанс появления одинаковых значений будет 0.00000006.

Для работы с ним в python существует модуль uuid. У этого протока есть 5 версий, но мы рассмотрим только три:

uuid1() — Генерирует уникальный номер на основе MAC-адреса и времени во время создания.

uuid3(namespace, name) — Создаёт уникальное число на основе namespace (uuid) и name (string).

uuid4() — просто генерирует случайное значение.

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

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

Условие:

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

Примеры:

to_human_dur(1) -> '1 second'
to_human_dur(62) -> '1 minute and 2 seconds'
to_human_dur(3600) -> '1 hour'
to_human_dur(3662) -> '1 hour, 1 minute and 2 seconds'

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

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