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

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Поиск в ширину

Тут про DFS. А в этот раз поговорим про breadth-first Search — алгоритм, способный быстро и без ограничений пройтись по графу.

Алгоритм: Сначала берём стартовую вершину и добавляем в очередь. После вытаскиваем её из очереди и добавляем соседей. С соседями делаем тоже самое, что и с первой вершиной.

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

#алгоритмы #графы
Что выведет код выше?
Anonymous Quiz
28%
[1, 2, 3]
6%
[1, 2]
19%
[1, 3]
33%
[2, 3]
14%
Узнать ответ
⚡️ Задачка с собеседования | #Medium

Условие:

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

Придумайте решение без append, pop и remove, это довольно медленные операции.

Пример:

move_zeros([1, 0, 0]) ➞ [1, 0, 0]
move_zeros([1, 0, 5]) ➞ [1, 5, 0]
move_zeros([0, 0, 1]) ➞ [1, 0, 0]

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

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

С помощью срезов мы можем не просто получать определённое количество элементов, а и менять их. Называют это так: «Изменение путем присваивания».

Таким образом мы заменяем элементы внутри этого среза другими из итератора (список, кортёж, словарь, range).

С их помощью мы также можем добавлять/удалять элементы, опустошать список и многое другое. Но в разреженных срезах такое не работает.

#теория
Что выведет код выше?
Anonymous Quiz
44%
True
51%
False
5%
Узнать ответ
⚡️ Парсим XML и HTML

И самым лучшим выбором для этого является lxml. Это библиотека позволяет быстро обрабатывать файлы XML и HTML формата.

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

Он намного быстрее, чем html.parser и с ним в разы проще работать. Более стабильной и удобной альтернативой является html5lib, но это довольно медленная библиотека.

Единственным недостатком модуля является его сильная зависимость от C. Подробнее обо всём на GitHub.

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

Условие:

Вам нужно найти в промежутке от a до b (range(a, b + 1)) числа с особым свойством. Это те, у которых сумма их цифр, возведенных в степень их позиции равняется тому же числу.

Примеры:

sum_dig_pow(1, 100) ➞ [1, 2, 3, 4, 5, 6, 7, 8, 9, 89]
sum_dig_pow(100, 135) ➞ [135]
sum_dig_pow(90, 100) ➞ []

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

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

С помощью arcade мы можем создавать полноценные игры с 2D графикой.

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

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

Конечно, есть и недостатки: вам придётся вручную управлять окном и его рендером, а также циклом обработки действий.

У модуля очень хорошая документация, поэтому проблем с его изучением возникнуть не должно.

#миниурок #arcade
Что выведет код выше?
Anonymous Quiz
46%
True
50%
False
4%
Узнать ответ
⚡️ Генераторы и yield

В Python есть объекты, которые могут возвращать не одно значение, а несколько. Делается это за счёт оператора yield.

Когда мы используем его в функции и вызываем её, в результате получаем генератор. Получить значение из него можно с помощью функции next().

Код в функции выполняется также, как и всегда, но останавливается, когда встречает yield и ждёт следующего вызова next().

Также по генератором можно пройтись с помощью цикла for, но только один раз.

#теория
⚡️ Шаблон Снимок

Паттерн позволяет сохранять и восстанавливать прошлые состояния объектов, при этом не раскрывая подробности их реализации.

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

Класс игрока может самостоятельно собрать данные, которые необходимо сохранить и вернуть их в виде объекта Memento. Также класс игрока реализует восстановление из Memento.

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

Условие:

По заданному числу найдите перестановку с наименьшим абсолютным значением (без нулей в начале числа). На вход идёт целое число и в результате тоже должно быть целое число.

Примеры:

min_permutation(0) ➞ 0
min_permutation(-20) ➞ -20
min_permutation(293940) ➞ 203499

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

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