Поколение Python 🐍
40.7K subscribers
1.49K photos
15 videos
5 files
614 links
"Поколение Python" — серия курсов по языку Python от BEEGEEK 🐝.

Сайт: pygen.ru
Мерч: shop.pygen.ru
Чат: @pygen_ru_comments
Бот: @pygen_ru_bot
Поддержка: @pygen_ru_support
YouTube: youtube.com/@pygen_ru

Перечень РКН: https://www.gosuslugi.ru/snet/673650
Download Telegram
Друзья, хотим рассказать о мероприятии для школьников, которое получило поддержку "Поколения". 😎

В апреле и мае детский технопарк "Кванториум" города Владикавказа провел цикл мастер-классов по применению математики в современных технологиях.

Что делали на мастер-классах:

решали квадратные уравнения с помощью библиотеки math для Python
разбирались, как применять знания о координатной плоскости для анимации персонажей в Scratch
рассчитывали скорость движения в покадровой анимации
и многое другое

😍 Кроме бесценных знаний и навыков, в конце мастер-классов школьники получили подарки от "Поколения": обложки на паспорт и картхолдеры.

☝️☝️☝️☝️ "Поколение" регулярно поддерживает мероприятия, связанны с программированием и точными науками. Например, в прошлом году мы помогли с призами для соревнований по парному экстремальному программированию центру цифрового образования детей "IT-куб" во Владикавказе.

Ставьте реакцию:

🔥 — если познакомились с программированием еще в школе
👀 — если начали кодить уже взрослым

#поколениеpython #мерч #акция #спонсорство
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, у нас отличные новости: запускаем весеннюю распродажу платных курсов! 😍

💚До 2 июня дарим скидку более 2000 рублей на любой платный курс!

➡️ Стоимость курса со скидкой — 4790 рублей вместо 6900.

🌟 Помните, что курс можно купить сейчас, а пройти в любое удобное для вас время (например, в летнем отпуске 😄).

⚠️ Кроме того, мы сделали дополнительную скидку на пакеты курсов, которые доступны по ссылке. Теперь вы сами можете выбрать курсы, которые купите пакетом! Доступны пакеты из 2, 3 и 4 курсов сразу.

☝️☝️☝️☝️ Со скидками весенней распродажи не суммируются другие наши скидки (для студентов, для учителей и так далее). Скидка по распродаже — максимальная из доступных.

💵💵💵💵 действует при покупке курсов через наш официальный сайт. 😉

Ставьте реакцию:

🔥 — если планируете учиться летом
❤️ — если будете отдыхать
👀 — если придется работать

#поколениеpython #акция #распродажа #ооп #профи #sql #алгоритмы
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, сегодня поговорим о методе двух указателей.

🟪 Метод двух указателей — это простая и эффективная техника обработки последовательностей, таких как строки или списки. Чаще всего он применяется в тех случаях, когда среди элементов последовательности нужно найти пару элементов или несколько идущих подряд элементов, удовлетворяющих определенному условию.

Указатель — это переменная, которая хранит определенный индекс последовательности и тем самым "указывает" на элемент под этим индексом.

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

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

Приведенный ниже код:
def is_palindrome(s):
left, right = 0, len(s) - 1

while left < right:
if s[left] != s[right]:
return 'не палиндром'
left += 1
right -= 1

return 'палиндром'

print(is_palindrome('abc'))
print(is_palindrome('abcba'))


выводит:
не палиндром
палиндром

Альтернативное решение с применением срезов:

def is_palindrome(s):
return s == s[::-1]


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

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

Ставьте реакцию:

🔥 — если знали о методе двух указателей
👀 — если узнали о нем впервые

🔝🔝🔝Сохраняйте пост в избранное, точно пригодится! ✍🏻

#поколениеpython #курспоалгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, принесли вам новую задачу с собеседований! 😍

🟠🟠🟠🟠🟠🟠
🟠🟠🟠🟠🟠🟠🟠
Рассмотрим список целых чисел [3, 7, 2, 5]. Определим минимальный элемент этого списка и прибавим его к каждому элементу списка. Тогда список примет следующий вид:

[3 + 2, 7 + 2, 2 + 2, 5 + 2] -> [5, 9, 4, 7]

Реализуйте функцию restore_values(), которая принимает один аргумент:

🔸nums — список целых чисел (1 ≤ len(nums) ≤ 10⁶)

Функция должна возвращать список nums в том состоянии, в котором он был до того, как к каждому его элементу прибавили минимальный элемент.
🟠🟠🟠🟠🟠🟠🟠

Примеры тестовых данных:

print(restore_values([6, 10]))  # [3, 7]


print(restore_values([2, 2, 2]))  # [1, 1, 1]


print(restore_values([0, 0, 0]))  # [0, 0, 0]


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

Ставьте реакцию:

🔥— если любите находить хитрые способы решения задачи
👀 — если предпочитаете стандартный подход

#поколениеpython #собеседования #задачанакод
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, сегодня поговорим о positional-only и keyword-only параметрах функций. 😉

❤️Параметры positional-only — это параметры, которым можно передать только позиционные аргументы. В определении функции такие параметры указываются перед символом /, который записывается как один из параметров.

В приведенном ниже коде:

def add(a, /, b=2):
return a + b

print(add(1, 3)) # 4
print(add(1, b=3)) # 4


a — параметр positional-only, b — обычный необязательный параметр.

Если positional-only параметру передать именованный аргумент, будет возбуждено исключение TypeError.

❤️Параметры keyword-only — это параметры, которым можно передать только именованные аргументы. В определении функции такие параметры указываются после символа *, который записывается как один из параметров.

В приведенном ниже коде:

def add(a, *, b=2):
return a + b

print(add(a=1, b=3)) # 4
print(add(1, b=3)) # 4


a — обычный обязательный параметр, b — параметр keyword-only.

Если keyword-only параметру передать позиционный аргумент, будет возбуждено исключение TypeError.

😌 Параметры positional-only и keyword-only можно использовать одновременно в одном определении функции, в том числе вместе с обязательными и необязательными параметрами в любых сочетаниях, например, так:

def add(a, /, b, c, *, d):
return a + b + c + d


❤️Основная цель добавления параметров positional-only и keyword-only — это улучшение читаемости и ясности кода, а также бóльшая гибкость в управлении интерфейсом функций. Например, параметры positional-only позволяют менять имена в определении функции без риска нарушить обратную совместимость, а параметры keyword-only гарантируют ясность и узнаваемость при вызове функции.

Ставьте реакцию:


🔥 — если знали про positional-only и keyword-only параметры
👀 — если слышите о них впервые

🔝🔝🔝Сохраняйте пост в избранное, точно пригодится! ✍🏻

#поколениеpython #полезныйматериал
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, баги повсюду! 😁

Попробуйте замените слово в названии фильма словом "баг". 🪲

Мы начнем:

🌱Унесенные багами
🌱Список багов
🔵Темный баг

Ставьте реакцию:

🔥 — если угадали оригиналы всех фильмов из поста
👀 — если что-то осталось непонятным

#поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, разберем задачу с собеседований! 😌

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

def restore_values(nums):
n = len(nums)
result = [0] * n
min_value = min(nums) // 2
for i in range(n):
result[i] = nums[i] - min_value
return result


💡 Минимальный элемент в исходном списке остался минимальным и после прибавления, только увеличился вдвое. Заведем вспомогательный список result c размером, равным размеру входного списка, и заполним его нулями. С помощью функции min() определим минимальный элемент входного списка. В цикле проходим по всем элементам списка result и записываем значение соответствующего элемента входного списка за вычетом минимального значения, уменьшенного вдвое. По завершении цикла возвращаем список result.

Также можно воспользоваться списочным выражением:

def restore_values(nums):
min_value = min(nums) // 2
return [num - min_value for num in nums]


⬇️Как вы думаете, какова временнáя и пространственная сложность данного алгоритма? Пишите в комментариях. 😉

Ставьте реакцию:

🔥 — если задача показалась вам легкой
👀 — если пришлось основательно подумать над решением

#поколениеpython #собеседования #разборзадачи
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, собрали для вас дайджест публикаций “Поколения” за май. Будем считать его списком чтения на лето! 😉

😵‍💫 ЗАДАЧИ

🟢Задача на код №1 и ее разбор
🟢Задача на код №2 и ее разбор
🟢Задача про скорость парохода и ее разбор
🟢Вопрос с собеседования про магический метод new() и ответ на него

😎 ПОЛЕЗНЫЕ МАТЕРИАЛЫ

🟢Слово недели. Линтер
🟢Слово недели. Миксин
🟢Слово недели. Трассировка стека
🟢Группировка данных в SQL
🟢Транзитивность операторов
🟢Метод двух указателей
🟢Positional-only и keyword-only параметры функций

😮 ПОЗНАВАТЕЛЬНЫЕ ПОСТЫ

🟢Кто такие фрилансеры
🟢Структура компьютерной памяти
🟢Парадокс дней рождения

👩‍❤️‍👨 НОВОСТИ “ПОКОЛЕНИЯ”

🟢Подарки за покупку мерча до 6 июня
🟢Много новых пинов на Озоне
🟢Ответы на вопросы от Тимура
🟢“Поколение” поддержало мероприятие для школьников

Ставьте ❤️ и сохраняйте пост в избранное, чтобы ничего не пропустить!

#дайджест #май2025
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, а вот и новое слово недели! Сегодня поговорим о транзакциях в базах данных. 🙂

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

Предположим, что мы пишем банковское ПО, которое должно выполнять три действия:

списание денег со счета отправителя
добавление денег на счет получателя
сохранение информации о произведенном переводе денег

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

Такая совокупность связанных действий представляет собой транзакцию. Действия, составляющие транзакцию, должны быть выполнены только все вместе.

🟪 Транзакции обрабатываются транзакционными системами, к которым существует набор требований — ACID. К этим требованиям относятся:

1⃣Atomicity (атомарность): любая транзакция не может быть частично завершена — она либо выполнена, либо нет.

2⃣Consistency (согласованность): завершившаяся транзакция должна сохранять согласованность базы данных.

3⃣Isolation (изолированность): транзакция не должна оказывать влияния на результаты других выполняющихся параллельно с ней транзакций.

4⃣Durability (устойчивость): изменения, которые сделаны успешно завершенной транзакцией, должны остаться сохраненными после возвращения системы в работу.

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

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

Ставьте реакцию:

🔥 — если знали, что такое транзакция
👀 — если слышите этот термин впервые

🔝🔝🔝Сохраняйте пост в избранное, точно пригодится! ✍🏻

#словонедели #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, решаем задачу, от которой очень хочется мороженого! 😁

🧠🧠🧠🧠

Команда "Поколения" решила подарить Тимуру целую коробку мороженого. Им нужно выяснить, какое именно мороженое любит Тимур.

Команда опросила трех знакомых Тимура, и все они сказали разные вещи:

🩵первый сказал, что Тимур любит малиновый щербет
🩵второй уверен, что Тимур обожает шоколадный пломбир
🩵третий сообщил, что Тимур любит джелато, но точно не малиновое

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

Помогите команде "Поколения" найти ответ! Свои варианты и ход мысли пишите в комментариях, не забывая про скрытый текст.

Ставьте реакцию:

🔥 — если любите мороженое
👀 — если равнодушны к нему

#задача #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, сегодня поговорим о системах счисления. 😍

❤️Система счисления — это способ записи чисел с помощью определенного набора символов, называемых цифрами.

Сегодня существует множество разных систем счисления. В одних системах значение каждой цифры зависит от ее позиции в записи числа, а в других — нет. На основе этого свойства все системы счисления делятся на две группы: позиционные и непозиционные.

❤️Непозиционная система счисления — это система счисления, в которой значение каждой цифры не зависит от ее позиции в записи числа. Где бы цифра ни находилась, она всегда имеет одно и то же значение.

К непозиционным системам счисления относятся, например:

❤️унарная
❤️египетская, представлена на картинке 😵‍💫
❤️римская

❤️Позиционная система счисления — это система счисления, в которой значение каждой цифры зависит от ее позиции в записи числа. При перемещении цифры с одного места на другое ее значение меняется.

К позиционным системам счисления относятся, например:

❤️двоичная
❤️десятичная, является основной и используется повсеместно
❤️шестнадцатеричная

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

😃 Раньше в Китае использовалась пятеричная система счисления, основанная на количестве пальцев на одной руке. У ацтеков, майя и некоторых народов Африки применялась двадцатеричная система, которая учитывала общее число пальцев на руках и ногах. Помимо этого существовала двенадцатеричная система, основанная на подсчете фаланг пальцев.

Ставьте реакцию:

🔥 — если знали о всех перечисленных системах счисления
👀 — если узнали о некоторых впервые

#поколениеpython #япознаюмир #системысчисления
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, принесли вам новый вопрос с собеседований! 😌

Что такое метод класса? Как его создать? Чем методы класса отличаются от методов экземпляра класса?

🤍 Делитесь в комментариях своими ответами на вопрос! 😍

Ставьте реакцию:

🔥 — если уже прошли собеседование и работаете в IT
❤️ — если еще на пути к этой цели

#поколениеpython #собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, сегодня поговорим о методе скользящего окна. 😌

📎 Ранее мы рассмотрели технику обработки последовательностей под названием метод двух указателей. Вариант реализации метода двух указателей, при котором направление движения указателей совпадает, часто выделяют в качестве отдельной техники и называют методом скользящего окна. Под окном здесь подразумевается область, заключенная между указателями, которая "скользит" вдоль последовательности и просматривает часть ее элементов.

✔️ Указатели могут находится на одинаковых или разных начальных позициях и перемещаться в одном направлении с равной или неравной скоростью. Например:

🟢два указателя движутся направо с неравной скоростью, начиная с одной и той же позиции — первой

[1, 2, 3, 4, 5, 6]
↑↑


🟢два указателя движутся направо с равной скоростью, при этом один из них начинает с первой позиции, а другой — с третьей

[1, 2, 3, 4, 5, 6]
↑ ↑

🟢два указателя движутся направо с неравной скоростью, при этом один из них начинает с первой позиции, а другой — с четвертой

[1, 2, 3, 4, 5, 6]
↑ ↑

✔️ Если указатели движутся с одинаковой скоростью, то длина образованного ими окна всегда будет одной и той же. Если же указатели движутся с разной скоростью, то длина образованного ими окна постоянно меняется.

📎 Метод скользящего окна позволяет эффективно решать множество различных задач, связанных с обработкой последовательностей. Он довольно часто встречается на алгоритмических собеседованиях. 😉

Ставьте реакцию:

🔥 — если знали о методе скользящего окна
👀 — если узнали о нем впервые

🔝🔝🔝Сохраняйте пост в избранное, точно пригодится! ✍🏻

#поколениеpython #курспоалгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, открылся последний модуль в нашем новом курсе "Алгоритмы и структуры данных для начинающих"! 😍

В модуль "Структуры данных" вошли темы:

🟢односвязный список
🟢двусвязный список
🟢кольцевой список
🟢стек
🟢очередь
🟢дек

Всего в этом модуле 116 тестовых задач и 96 задач на программирование. После того, как решите их все, у вас точно не останется вопросов по этим темам. 😁

☝️☝️☝️☝️ Совсем скоро появятся последние уроки по хеш-таблицам, и курс будет готов на 100%. После этого мы приступим к курсу для продвинутых. 😎 Если хотите первым узнать о его выходе (и о бонусах к курсу), оставьте заявку на сайте.

🚨🚨⚠️🚨☝️ Также скоро в курсе откроются тестовые алгоритмические собеседования. Их цель — проверить ваши знания по алгоритмам и структурам данных и помочь подготовиться к реальному трудоустройству.

❗️Тем, кто не успел купить курс на весенней распродаже, дарим промокод АЛГОСЫ. С ним курс по алгоритмам для начинающих будет стоить 4790 рублей вместо 6900. Доступно всего 1️⃣0️⃣ активаций промокода.

Ставьте реакцию:

🔥 — если уже проходите курс по алгосам
👀 — если пока проходите другие курсы

#поколениеpython #алгоритмы #скидки
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, отвечаем на вопрос с собеседований! 😎

🌱Методы класса, как следует из названия, тесно связаны с классом, в котором они определены. В отличие от методов экземпляра, имеющих обязательный параметр self, указывающий на экземпляр класса, методы класса имеют обязательный параметр cls, который указывает на сам класс.

🌱Методы класса имеют возможность менять состояние класса, а это, в свою очередь, отражается на всех экземплярах данного класса. Однако менять состояние конкретного объекта, как это делают методы экземпляра, они не могут, так как имеют доступ лишь к классу.

🌱Для создания методов класса используется декоратор @classmethod.

Приведенный ниже код:

class MyClass:
@classmethod
def my_classmethod(cls):
print('Это метод класса')
print(cls)


MyClass.my_classmethod()


создает в классе MyClass метод класса my_classmethod() и выводит:

Это метод класса
<class '__main__.MyClass'>

😌 Присутствие параметра cls в методе класса обязательное. Мы не обязаны называть его cls, однако рекомендуется действовать согласно общепринятой практике.

Ставьте реакцию:

🔥 — если знали ответ на вопрос
👀 — если пришлось гуглить

#поколениеpython #собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, а вы кто в мире программирования? 😁

Пишите в комментариях, что у вас получилось!

Ставьте реакцию:

🔥 — если получилось что-то осмысленное
👀 — если совсем не про вас

#поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM