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
Что выведет код выше?
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
⚡️ Задачка с собеседования | #Easy

Условие:

Напишите функцию, которая проверяет, существует ли такой ipv4 адрес. В строке должно быть 4 числа, разделённых точкой, входящие в промежуток [0, 255].

Примеры:

check_ip('10.10.10.10') -> True
check_ip('
255.255.255.254') -> True
check_ip('
192.168.0.0') -> False
check_ip('
192.168.0.1') -> True
check_ip('
192.168.0.255') -> False


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

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

Для этого придумали модуль phonenumbers, позволяющий форматировать, парсить и проверять номера.

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

parse(number, country)
— выводит полезную информацию о введённом номере.

is_possible_number(num), is_valid_number(num) — проверяют, может ли такой номер существовать и верный ли он.

format_number(num) — выводит номер в необходимом формате из перечисления PhoneNumberFormat.

И это ещё не всё. Подробнее о модуле можно почитать в документации.

#миниурок #phonenumbers
Что выведет код выше?
Anonymous Quiz
34%
2 3 4
20%
2 4 3
15%
2 4 None
15%
2 None 4
16%
Узнать ответ
⚡️ Работаем с таблицами

Для этого придумали модуль tablib, позволяющий быстро создавать, изменять и экспортировать таблицы.

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

Dataset()
— основной класс, работающий с таблицой. Ниже будут его методы.

append(data) — заполняет таблицу, используя итерируемый объект из data.

export(type) — очень удобная функция, позволяющая сохранять таблицу в различных форматах.

Подробнее с ней можете ознакомится на сайте документации.

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

Условие:

На вход идёт сортированный список из нескольких чисел и передаётся вторым параметром число, которое надо найти. Если цель присутствует в списке, то нужно вернуть её индекс. Иначе — индекс, в котором можно было бы её добавить для сохранения порядка.

Примеры:

insert_into([1, 2, 3, 5, 6], 4) -> 3
insert_into([1, 2, 4, 5], 4) -> 2
insert_into([1, 3, 2, 6], -1) -> 0

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

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

Для этого в Python существует модуль xml.dom или, с минимальной реализацией, xml.dom.minidom, о котором мы и поговорим.

parse(file) — считывает и парсит модель из файла file. Возвращает Document из того же модуля.

parseString(str) — парсит DOM из строки. Возвращает тот же Document, что и parse.

Подробнее же об объектах можете почитать на сайте документации.

#миниурок #xml #dom
Что выведет код выше?
Anonymous Quiz
27%
True
35%
False
27%
Ошибку
11%
Узнать ответ
⚡️ Собираем информацию об объекте

С помощью модуля inspect можно получить множество полезной информации о модуле, классе или функции. Это может быть, например, исходный код, сигнатура или название файла.

inspect.getsource(obj) — возвращает исходный код модуля, класса, функции, или выбрасывает OSError.

inspect.signature(func) — показывает, как определены параметры у функции.

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

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

Условие:

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

Примеры:

subsets([1, 2, 2]) -> [[], [1], [2], [1, 2], [2, 2], [1, 2, 2]]
subsets([1, 2, 3]) -> [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
subsets([0]) -> [[], [0]]

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

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

Помимо того, что было описано в первой и второй части, вы можете создавать особые типы, псевдонимы и использовать обобщения.

Псевдонимы создаются так же, как и переменные, name = type.

Особые типы создаются при помощи NewType, на вход он принимает название и тип, который хранит.

Обобщения хранят в себе объекты, тип которых сразу неизвестен. Создавать собственные дженерики можно с помощью Generic и TypeVar.

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

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

Условие:

Вам необходимо написать код, который бы возвращал сумму периметров всех квадратов в прямоугольнике, когда имеется n + 1 квадратов, расположенных так же, как на рисунке.

Примеры:

perimeter(1) -> 8
perimeter(5) -> 80 # 4 * (1 + 1 + 2 + 3 + 5 + 8) = 4 * 20 = 80
perimeter(20) -> 114624

Подсказка: воспользуйтесь последовательностью Фибоначчи.

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

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

В Python есть интересная конструкция, позволяющая добавлять else в конец определения цикла while или for.

Вызывается блок кода только тогда, когда цикл закончил итерацию объекта. Иначе он просто игнорируется.

Такую вещь очень удобно использовать при поиске чего-либо, а подробнее о ней вы можете почитать тут.

#теория #for