⚡️ Задачка с собеседования | #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 часа на этом канале. 👇
#Задачка_с_собеседования
Условие:
На вход идёт словарик типа «Монета : Количество». Монеты могут быть 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, подробнее о котором можно почитать на сайте документации.
#теория
Типизированный код упростит его понимание другими разработчиками, позволит лучше работать с 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"]) -> []
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇#Задачка_с_собеседования
⚡️ Дзен Python
Это свод из 20 правил, предложенный Тимом Петерс для улучшения языка Python.
На самом деле их 19, а последнего до сих пор не существует. Это указывает, что для каждого правила могут быть исключения.
Посмотреть вы их можете с помощью команды import this. Если желаете прочитать перевод, то просто напишите "Дзен Python" в гугле.
Что самое интересное, если посмотреть исходный код модуля с помощью inspect.getsource(this), то вы увидите наоборот усложненный и запутанный код ;)
Это свод из 20 правил, предложенный Тимом Петерс для улучшения языка Python.
На самом деле их 19, а последнего до сих пор не существует. Это указывает, что для каждого правила могут быть исключения.
Посмотреть вы их можете с помощью команды import this. Если желаете прочитать перевод, то просто напишите "Дзен Python" в гугле.
Что самое интересное, если посмотреть исходный код модуля с помощью inspect.getsource(this), то вы увидите наоборот усложненный и запутанный код ;)
Что выведет код выше?
Anonymous Quiz
43%
<class 'str' >
14%
<class 'int' >
11%
<class 'NoneType' >
19%
Ошибку
13%
Узнать ответ
⚡️ Задачка с собеседования | #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