⚡️ Задачка с собеседования | #Medium
Условие:
Ваша задача — написать программу для создания блоков комментариев. Результат должен быть таким же, как и на картинке выше.
Можете усложнить задачу, добавив больше возможностей для кастомизации (другие символе вместо пробела, другой размер и так далее).
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Ваша задача — написать программу для создания блоков комментариев. Результат должен быть таким же, как и на картинке выше.
Можете усложнить задачу, добавив больше возможностей для кастомизации (другие символе вместо пробела, другой размер и так далее).
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Кэшируем значения метода
Разберём для этого модуль functools — он предоставляет декораторы cache и cached_property для сохранения данных и их будущего использования, что может может быть очень полезно при работе с рекурсией.
К примеру, вызов factorial(10), который вы видите на картинке выше. В первом вызове создаётся словарик типа «Входные данные : Возвращаемое значение» и заполняется результатами работы программы.
А вот factorial(5) уже не потребует никаких расчётов, поскольку значения кэшировались, что довольно хорошо сказалось на производительности.
@ cache используется для функций, а вот @ cached_property для свойств (это тоже самое, что и @ cache @ property).
Разберём для этого модуль functools — он предоставляет декораторы cache и cached_property для сохранения данных и их будущего использования, что может может быть очень полезно при работе с рекурсией.
К примеру, вызов factorial(10), который вы видите на картинке выше. В первом вызове создаётся словарик типа «Входные данные : Возвращаемое значение» и заполняется результатами работы программы.
А вот factorial(5) уже не потребует никаких расчётов, поскольку значения кэшировались, что довольно хорошо сказалось на производительности.
@ cache используется для функций, а вот @ cached_property для свойств (это тоже самое, что и @ cache @ property).
⚡️ Задачка с собеседования | #Easy
Условие:
Ваша задача — написать функцию, которая проверит, все ли значения увеличиваются на один
Пример:
#Задачка_с_собеседования
Условие:
Ваша задача — написать функцию, которая проверит, все ли значения увеличиваются на один
Пример:
increasing([-1, 0, 1, 2, 3]) -> True📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
increasing([-1, 0, 1, 3, 4])) -> False
increasing([0, 1]) -> True
increasing([1, 0]) -> False
#Задачка_с_собеседования
Подсказка для айтишников: учите сразу несколько языков.
Python, C++, Swift — всё можно освоить за 1-2 месяца. Главное найти правильный канал, где всё объяснят доступно.
Например, IT Data. Ребята укомплектовали инфу так, что понять азы и найти работу сможете через месяц после подписки.
Здесь можно выучить более 10 языков. По готовым инструкциям. Бесплатно. Прямо в телеграм.
Стартуйте — t.me/Data_IT
Python, C++, Swift — всё можно освоить за 1-2 месяца. Главное найти правильный канал, где всё объяснят доступно.
Например, IT Data. Ребята укомплектовали инфу так, что понять азы и найти работу сможете через месяц после подписки.
Здесь можно выучить более 10 языков. По готовым инструкциям. Бесплатно. Прямо в телеграм.
Стартуйте — t.me/Data_IT
⚡️ Создаём универсальные функции
Ранее мы рассмотрели partial и кэширование из модуля functools. Теперь, изучим декораторы singledispatch и singledispatchmethod.
Представим, что у нас есть метод, который по разному себя ведёт в зависимости от типа данных. Реализовать эту фичу можно с помощью проверки isinstance или используя singledispatch.
Этот декоратор добавляет метод register, который принимает (или считывает с реализации функции) тип и сохраняет его. После, на основе полученных данных вызывает необходимый метод.
singledispatchmethod делает тоже самое, что и singledispatch, но используется в классах.
#миниурок #декораторы
Ранее мы рассмотрели partial и кэширование из модуля functools. Теперь, изучим декораторы singledispatch и singledispatchmethod.
Представим, что у нас есть метод, который по разному себя ведёт в зависимости от типа данных. Реализовать эту фичу можно с помощью проверки isinstance или используя singledispatch.
Этот декоратор добавляет метод register, который принимает (или считывает с реализации функции) тип и сохраняет его. После, на основе полученных данных вызывает необходимый метод.
singledispatchmethod делает тоже самое, что и singledispatch, но используется в классах.
#миниурок #декораторы
⚡️ Узнаём о системе подробнее
Предустановленный модуль platform позволяет узнать различные характеристики устройства и ПО, такие как архитектуру процессора, версию Python и даже название компьютера в сети.
node() — возвращает название устройства в сети. Если значение не удаётся определить, возвращается пустая строка.
system() — вернёт операционную систему. Linux, Windows или Darwin — здесь всё и так понятно.
python_version() — скажет о версии компилятора python в виде строки. А вот python_version_tuple() вернёт значение в виде кортежа.
Ещё подробнее, как обычно, на сайте документации.
#миниурок #platform
Предустановленный модуль platform позволяет узнать различные характеристики устройства и ПО, такие как архитектуру процессора, версию Python и даже название компьютера в сети.
node() — возвращает название устройства в сети. Если значение не удаётся определить, возвращается пустая строка.
system() — вернёт операционную систему. Linux, Windows или Darwin — здесь всё и так понятно.
python_version() — скажет о версии компилятора python в виде строки. А вот python_version_tuple() вернёт значение в виде кортежа.
Ещё подробнее, как обычно, на сайте документации.
#миниурок #platform
⚡️ Задачка с собеседования | #Easy
Условие:
Ваша задача — найти суму всех чисел, перемноженных на их индекс.
Пример:
#Задачка_с_собеседования
Условие:
Ваша задача — найти суму всех чисел, перемноженных на их индекс.
Пример:
sum_mult_index([1,2,3,4]) -> 20
sum_mult_index([11,22,55,33,44]) -> 407
sum_mult_index([-1, 0, -8, 11]) -> 17
sum_mult_index([0, 0, 0, 0, 0]) -> 0
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇#Задачка_с_собеседования
⚡️ Переопределяем методы взаимодействия объектов
Знаете ли вы, что сложение, вычитание и так далее — это не заранее написанные функции, а просто методы класса?
Это значит, что их можно переопределить и задать своё поведение.
Отличным примеров является ранее упомянутый pathlib, в котором мы изменили действия деления.
На фотографии выше мы переопределяем __add__
В одном посте невозможно описать все действия, поэтому, как обычно, оставляем вам ссылку на сайт документации ;)
| P.S: Пост о dataclass был тут.
#миниурок #pathlib
Знаете ли вы, что сложение, вычитание и так далее — это не заранее написанные функции, а просто методы класса?
Это значит, что их можно переопределить и задать своё поведение.
Отличным примеров является ранее упомянутый pathlib, в котором мы изменили действия деления.
На фотографии выше мы переопределяем __add__
и
__sub__, которые отвечают за сложение и вычитание.В одном посте невозможно описать все действия, поэтому, как обычно, оставляем вам ссылку на сайт документации ;)
| P.S: Пост о dataclass был тут.
#миниурок #pathlib
Что выведет этот код?
Anonymous Quiz
22%
(1, 2, 4)
19%
(1, 2)
5%
(1, 2, 3)
43%
Ошибку
10%
Узнать ответ
⚡️ Модуль __future__
Желаете запустить новый скрипт на старой версии python? Переписывать — долго и скучно. Лучше воспользуйтесь модулем __future__,
Он хранит в себе реализации будущих компонентов, например print и division.
В качестве пасхалки, вы также можете можете импортировать фигурные скобочки, как в си подобных языках с помощью
Если вы хотите изучить это более подробно — добро пожаловать на сайт документации ;)
#миниурок #future
Желаете запустить новый скрипт на старой версии python? Переписывать — долго и скучно. Лучше воспользуйтесь модулем __future__,
Он хранит в себе реализации будущих компонентов, например print и division.
В качестве пасхалки, вы также можете можете импортировать фигурные скобочки, как в си подобных языках с помощью
from __future__ import braces
. Но это вызовет исключение: SyntaxError: not a chanceЕсли вы хотите изучить это более подробно — добро пожаловать на сайт документации ;)
#миниурок #future
⚡️ Задачка с собеседования | #Easy
Условие:
Найти «счастливый» ip. Он считается счастливым, если сумма двух байтов с левой стороны равняются сумме двух байтов с правой стороны.
На вход функции всегда идёт строка с ipv4 адресом.
Пример:
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Найти «счастливый» ip. Он считается счастливым, если сумма двух байтов с левой стороны равняются сумме двух байтов с правой стороны.
На вход функции всегда идёт строка с ipv4 адресом.
Пример:
is_happy_ip("255.255.255.255") -> True
is_happy_ip("0.0.0.1") -> False
is_happy_ip("101.78.170.9") -> True
P.S. 1 байт - число от 0 до 255📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования