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

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Ответ на предыдущую задачку
⚡️ Копируем файлы с помощью shutil

shutil
— модуль, для выполнения высокоуровневых операций над файлами или коллекциями файлов.

• copyfile, copy, copy2 — методы для копирования файлов. copyfile копирует данные внутри файла обязательно в другой файл, а copy и copy2 могут принимать на выход — папку.

copy2 отличается тем, что также копирует все метаданные, такие как время создания, изменения и т.д.

• copytree — копирует целую ветку файлов и папок. Все директории внутри директории будут скопированы в заданное место.

Метаданные, права доступа повторяются с помощью copystat(), а файлы — copy2().

• copystat — копирует время, флаги, права доступа и т.д.

#миниурок #shutil
Что выведет этот код?
Anonymous Quiz
10%
12
36%
7
29%
3,5
25%
Ошибку
⚡️ Работаем с путями с помощью os.path

os.path
— низкоуровневый модуль для работы с файловыми путями. Мы рекомендуем работать с ранее упомянутым pathlib, но os.path стоит упомянуть поскольку он довольно часто встречается в проектах.

join(path, *paths) — соединяет все аргументы в один путь. Стоит отметить, что в unix-подобных системах и в windows пути отличаются и это может создать множество проблем с переносом скрипта на разные платформы.

expanduser(path) — заменяет или user на папку с пользовательскими данными. В linux это переменная HOME, а в Windows — USERPROFILE.

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

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

Условие
:

Ваша задача — написать код, который получает словарик типа «Имя : [массив оценок]».

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

Пример:

Вход
: {"Mark":[2, 6, 9, 2], "Kevin": [11, 8], "John":[7, 4, 11, 5, 8], "Max": [2, 4, 5]}

Вывод: Kevin: 9.50, Max: 3.67

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

Документация упрощает жизнь разработчикам и помогает понять, что делает определённые функция, класс или модуль без необходимости читать код целиком.

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

Что бы сделать свой код более понятным, необходимо написать """Информация о том, что делает метод""" под определением объекта.

Также, вы можете получить информацию, используя атрибут __doc__.

#теория #документация
Что выведет этот код?
Anonymous Quiz
29%
0 2 4
24%
2 4
16%
1 3
31%
Ошибку
⚡️ Упрощаем классы с данными

Модуль dataclasses позволяет упростить работу с созданием классов для хранения информации.

Так, декоратор dataclass самостоятельно определяет init, repr, eq и, если задано — сравнение (le, gt, etc), hash и запрет на изменение объекта.

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

Более развёрнуто — на сайте документации.

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

Условие:

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

Пример:

sumnum(1234) → 10
sum
num(-9876) → 30
sumnum(7013) → 11
sum
num(100001) → 2

P.S. Знак «
_» в числах может использоваться для упрощения чтения пользователем. 100000000 — это то же самое, что и 100000000

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

Абстрактные классы — это объекты, которые содержат, как ни странно, абстрактные методы.

Создаются они с помощью модуля, предустановленного в abc. Классы создаются с помощью ABC (или ABCMeta), а не реализованные методы — обозначаются декоратором abstractmethod.

Если же вы не желаете импортировать какие-либо библиотеки, воспользуйтесь NotImplementedError в тех методах, которые требуют реализации.

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

#миниурок #abc
Что выведет этот код?
Anonymous Quiz
19%
12
17%
8
19%
4
45%
Ошибку
⚡️ Python PyQuickie — дополнение к google chrome для практики в программирование на Python

PyQuickie — расширение одного из разработчика на reddit, которое поможет в простой форме улучшить свои знания в Python.

Оно выдаёт задачу по выбранному уровню сложности от самого лёгкого, до самого тяжёлого.

Вы пишите код для достижения определённой цели, а программа — сама выполняет тесты и уведомляет вас о результатах.

Расширение открывается поверх сайта, что позволяет отвлечься после тяжёлого дня и быстро решить парочку задач по Python.

На примере выше вы видите решение простой задачи, предложенной приложением.

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

Условие:

На вход идёт словарик типа «Монета : Количество». Монеты могут быть 1, 3, 5 и 10 рублёвыми. Количество монет и цена товара не ограничивается.

Метод находит суму всех монет и сравнивает цену. Если пользователь может себе позволить товар, то возвращает True, иначе — False.

Пример:

moneys = {5: 2, 3 : 2, 1 : 10, 10 : 0} # sum - 26

is_can_buy(moneys, 27) → False
is_can_buy(moneys, 36) → False
is_can_buy(moneys, 26) → True
is_can_buy(moneys, 15) → True

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

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

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

Так, довольно часто в примерах были символы : и -> в аргументах или после объявления функции. Другой символ, :, задаёт тип переменной, а -> — класс возвращаемого значения команды.

Типы могут быть как базовые (str, int, double, etc) так и более сложные (List, Dict, Callable, etc).

Для работы с последними необходим модуль typing, подробнее о котором можно почитать на сайте документации.

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

Условие:

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

Пример:

5, 6, 11, 10, 8], [2, 3, 5, 11], [11, 2]) -> [11]
find_values([11, 10, 3], [10, 3, 5, 11], [11, 10]) -> [11, 10]
find_values([8, 4, 7, "hi"], [8, "hi"], [4, "hi"]) -> ['hi']
find_values([1, 4, 3], [6, 2, 8], ["4", "hi"]) -> []

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

#Задачка_с_собеседования