Tips & Tricks. 5 интересных вариантов использования метаклассов в Python

Умение использовать метаклассы многими воспринимается как наличие черного пояса Python. Эта статья покажет вам 5 практических способов применения метаклассов.

#tipsandtricks
PythonBooksRu - канал для скачивания Python книг на русском языке.

Что в нашем канале:

1. Книги по питону, которые помогут вам пройти собеседование на позицию Python Developer.

2. Все книги на русском языке

3. Все книги можно скачать в 2 клика

4. Всё, никакой другой воды.

Подписывайтесь и качайте книги: @pythonknigiru
Задача на логику. Сколько задач в таск-трекере?

В таск-трекере есть некоторое количество задач. Если разбросать их все на 4 разработчиков, то останется еще 3 таски. Если делить на троих или на пятерых — останется 2 таски.

Сколько всего задач в трекере?

Решение тут. Просьба потратить хотя бы 10 минут перед тем как читать решение.

#логическаязадача
Топ. БНФ-нотация в документации Python

Читая документацию Python, вы могли встретить фрагменты БНФ-нотации (форма Бэкуса-Наура, англ. BNF Notation), которые выглядят примерно так:

name      ::= lc_letter (lc_letter | "_")*
lc_letter ::= "a"..."z"


Что означает весь этот странный код? Как это может помочь вам в понимании концепций Python? Как читать и интерпретировать эту нотацию?

Эта статья познакомит вас с основами БНФ-нотации Python. Вы узнаете, как ее использовать для глубокого понимания синтаксиса и грамматики языка.

#топ
Задача для новичков

Напишите функцию findGreatestLetter(), которая получает на вход строку, состаящую из английских букв. Эта функция должна вывести букву, которая встречается в строке как в верхнем, так и в нижнем регистре. (Вывести ее нужно в верхнем).

Если таких букв несколько, то надо вывести ту, которая больше в лексикографическом смысле (b > a например). Если такой буквы нет, то следует вывести пустую строку.

Примеры работы данной функции:

findGreatestLetter("arRAzFif") --> 'R'
findGreatestLetter("AbCdEfGhIjK") --> ''

Свои варианты пишите в комментариях! Решение - сегодня вечером.

#задача #coding
Ответ к предыдущей задаче для новичков

def findGreatestLetter(s):
return max([letter.upper() for letter in set(s) if letter.islower() and letter.upper() in s], default="")

#задача #coding
Задача с кодом. Множитель списков

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

Каждый вложенный список будет заполняться соответствующим элементом исходного списка. Количество элементов во вложенном списке должно быть таким же, как в исходном.

Примеры:

multiply([4, 5]) 
➞ [[4, 4], [5, 5]]

multiply(["*", "%", "$"])
➞ [["*", "*", "*"], ["%", "%", "%"], ["$", "$", "$"]]

multiply(["A", "B", "C", "D", "E"])
➞ [["A", "A", "A", "A", "A"], ["B", "B", "B", "B", "B"], ["C", "C", "C", "C", "C"], ["D", "D", "D", "D", "D"], ["E", "E", "E", "E", "E"]]

Решение на нашем сайте.

#задача #coding
Tips & Tricks. Сколько времени занимает работа вашей функции?

При помощи модуля time можно узнать, сколько времени необходимо для выполнения кода. Пример - в заметке.

#tipsandtricks #модули
Задача на логику. 99 мешков фальшивых монет

Есть 100 мешков с монетами. Известно, что в одном из них — настоящее золото, а в остальных — фальшивые монеты. На вид монеты совершенно одинаковы (на вкус и запах — тоже).

Также известно, что любая фальшивая монета весит ровно 1 унцию, а любая настоящая — 1,01 унции.

У вас есть весы (точные, показывающие вес). На них можно взвесить хоть все 100 мешков с монетами одновременно. Но вам доступно только одно взвешивание.

Как определить, в каком мешке золото?

Подсказка: мешки можно помечать, а также брать из них любое количество монет.

Решение тут.

#логическаязадача
Задача с кодом. Пишем функцию для «тупого добавления»

Условие: Создайте функцию, которая принимает два параметра. Если оба параметра — строки, то сложите их математически, если оба — integer, тогда сконкатенируйте их. Если параметры разного типа — верните None.

Примеры:
stupid_addition(1, 2) ➞ "12" 
stupid_addition("1", "2") ➞ 3
stupid_addition("1", 2) ➞ None

Решение на нашем сайте.

#задача #coding
Строки. Как напечатать табуляцию в Python

В этой статье мы рассмотрим, как напечатать табуляцию, т.е. вывести на экран табы (или пробелы) в виде отступов между частями строки.

#строки
Знаем, что тут сидят серьезные программисты, но если вдруг кто-то интересуется Бизнес Анализом - милости просим.

Бизнес Аналитик IT - канал о жизненном цикле разработки ПО глазами бизнес аналитика.

На канале вы найдете:
- теоретический материал
- интересные статьи
- профессиональную литературу
- полезные шпаргалки
- вопросы с собеседований
- опросы.

Подпишись и пройди наш тест для начинающего бизнес аналитика.
Тест. Битовые операции Python

Хорошо ли вы понимаете битовые операции? Пройдите тест из 10 вопросов и проверьте!

#тест
Задача с кодом. Скользящие числа

Напишите функцию, принимающую число и проверяющую, является ли оно «скользящим». Скользящее число — такое число, соседние цифры которого отличаются между собой на единицу.

Примеры:

is_slidey(123454321) ➞ True
is_slidey(54345) ➞ True
is_slidey(987654321) ➞ True
is_slidey(1123) ➞ False
is_slidey(1357) ➞ False
is_slidey(1) ➞ True

Обратите внимание на примеры 4 и 5. Если в числе идут подряд одинаковые цифры или какая-то цифра в ряду пропущена, такое число мы не считаем скользящим.

Если число записывается одной цифрой, оно считается скользящим.

Решение на нашем сайте.

#задача #coding
Tips & Tricks. Подсчет наиболее часто встречающихся элементов в итерируемом объекте

Показываем, как помощью инструмента Counter из модуля collections узнать, какие элементы итерируемого объекта встречаются чаще всего, и сколько раз.

#tipsandtricks #списки #строки #модули
⁉️ Хотите стать востребованными разработчиком на Python с нуля, но не знаете, с чего начать обучение?

Приходите на открытый практический урок «Генераторы и очереди в Python» от OTUS. Спикер Дмитрий Панкрашов — ведущий разработчик в компании-партнере вендора СЭД «Директум».

На вебинаре мы:

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

📌Занятие подойдет начинающим разработчикам и тем, кто только готовится к обучению.

Встречаемся 13 мая в 20:00 мск в преддверии старта курса «Специализация Python Developer».
Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS!

➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cwDPIv

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Задача на логику. Кто украл кошелек учительницы?

У учительницы пропал кошелек. Украсть его мог только кто-то из 5 учеников: Лилиан, Джуди, Дэвид, Тео или Маргарет. При опросе этих детей каждый из них дал по 3 показания:

Лилиан: 1) я не брала кошелек; 2) я никогда в своей жизни ничего не крала; 3) это сделал Тео.

Джуди: 4) я не брала кошелек; 5) мой папа достаточно богат, и у меня есть собственный кошелек; 6) Маргарет знает, кто это сделал.

Дэвид: 7) я не брал кошелек учительницы; 8) с Маргарет я не был знаком до поступления в школу; 9) это сделал Тео.

Тео: 10) я не виновен; 11) это сделала Маргарет; 12) Лилиан лжет, утверждая, что я украл кошелек.

Маргарет: 13) я не брала кошелек учительницы; 14) в этом виновна Джуди; 15) Дэвид может поручиться за меня, так как знает меня со дня рождения.

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

Вопрос: кто украл кошелек учительницы?

Решение тут. Просьба потратить хотя бы 10 минут перед тем как читать решение.

#логическаязадача
Django. Аутентификация в Django-REST с помощью Auth.js

В этом уроке рассматривается реализация системы аутентификации на основе Django REST (с помощью Django REST Framework) и ее интеграция с Auth.js (ранее известным как NextAuth.js) во фронтенде. Мы разберем настройку аутентификации на основе учетных данных, а также аутентификацию с помощью Google.

#django
Задача для новичков

Уродливое число — это положительное целое число, простыми множителями которого могут быть только числа 2, 3 и 5.

Напишите функцию isUgly(n: int), которая принимает на вход целое число n и возвращает True, если число уродливое, и False в противном случае. Также напишите тесты для этой функции, чтобы убедиться, что она работает нормально.

Свои варианты пишите в комментариях! Решение - сегодня вечером.

#задача #coding
Ответ к предыдущей задаче для новичков

# Функция для проверки числа на "уродливость"
def isUgly(n):
if n <= 0:
return False
while n % 2 == 0:
n /= 2
while n % 3 == 0:
n /= 3
while n % 5 == 0:
n /= 5
return n == 1

# Тесты для функции isUrgly()
def test_is_ugly():
assert is_ugly(6) == True
assert is_ugly(1) == True
assert is_ugly(14) == False
assert is_ugly(0) == False
assert is_ugly(-6) == False


#задача #coding
2024/05/12 02:39:56
Back to Top
HTML Embed Code: