Поколение Python 🐍

“Поколение Python” — серия курсов по языку Python, разработанная Тимуром и его командой (BEEGEEK 🐝).

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

View in Telegram

Recent Posts

Друзья, принесли вам полюбоваться красивое, целое и круглое число: 10 000 городов на карте "Поколения"! 😍

Наши студенты изучают программирование на Python по всему миру:

🔘Австралия: Канберра, Ньюкасл, Сидней, Аделаида
🔘Азия: Шанхай, Сингапур, Самуи, Ханой
🔘Арктика: Шпицберген
🔘Африка: Аддис-Абеба, Кейптаун, Будва
🔘Европа: Териберка, Бухарест, Рим, Дублин, Афины
🔘Северная Америка: Оттава, Мичиган, Чикаго, Бостон
🔘Южная Америка: Буэнос-Айрес, Бразилия, Асунсьон, Картахена
🔘 и много-много других мест

😉 Посмотреть интерактивную карту со всеми городами можно на сайте pygen.ru в разделе "География наших студентов".

☝️☝️☝️☝️ Если вы хотите добавить свой город на карту "Поколения", это можно сделать на нашем сайте! Давайте продолжать расширять нашу географию вместе. 😎

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

🔥 — если проходите курсы из России
❤️ — если учитесь за рубежом

#поколениеpython
Друзья, сегодня поговорим о бинарном поиске. 😎

📎Бинарный поиск — это алгоритм поиска заданного значения в отсортированном наборе данных.

✔️ Суть алгоритма бинарного поиска заключается в том, что набор данных делится пополам. Та половина, в которой может находиться искомое значение, остается, а другая половина отбрасывается. Затем действия повторяются: оставшаяся часть набора снова делится пополам, находится половина, где может быть искомое значение — она остается, а другая половина отбрасывается. Процесс повторяется до тех пор, пока не будет найдено искомое значение или пока не останется ни одного элемента для дальнейшего поиска.

😥 Бинарный поиск можно использовать только в том случае, если набор данных отсортирован по невозрастанию или по неубыванию.

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

⬆️ На картинке представлена реализация классического алгоритма бинарного поиска в списке, отсортированном по неубыванию.

Алгоритм бинарного поиска последовательно делит набор данных пополам, оставляя только ту половину, в которой точно может находиться искомое значение. Поскольку на каждом шаге объем данных уменьшается вдвое, количество шагов, необходимых для поиска, зависит от того, сколько раз исходный набор данных можно поделить пополам. Это можно определить по формуле ⌈log₂n⌉, где n — длина набора данных.

✔️ Таким образом, временнáя сложность алгоритма бинарного поиска равна O(logn), где n — длина набора данных.

🟢Преимущества бинарного поиска:

🟢Простота: легко понять и реализовать
🟢Производительность: работает очень быстро даже на огромных наборах данных

🟢Недостатки бинарного поиска:

🟢Неуниверсальность: применим только если набор данных отсортирован
🟢Ограниченное применение: неприменим к коллекциям, не поддерживающим индексацию и порядок

Выход курса по алгоритмам запланирован на 1 апреля. Вы можете купить его заранее со скидкой 20% и получить приятные бонусы. Подробности по ссылке!

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

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

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

#поколениеpython#курспоалгоритмам
Друзья, принесли вам новый вопрос с собеседований! 😎

В программе определена следующая функция:

def func():
return 'beegeek'


Мы можем обратиться к данной функции двумя способами:

🟪func
🟪func()

Чем отличаются два этих выражения?

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

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

❤️ — если считаете, что в резюме важно писать только правду
👀 — если можно и приукрасить 😃

#поколениеpython#собеседования
Друзья, сегодня выясним, что такое канбан, как он работает и чем отличается от Scrum, с которым его часто путают. 🧐

Канбан — система организации работы, которая появилась в 50-е годы в компании Toyota и была переработана для сферы ИТ в начале XXI века в рамках концепции бережливой разработки, о которой мы уже говорили.

Основные принципы канбана:

⭐️ визуализация работы на доске
⭐️ ограничение количества задач в работе одновременно
⭐️ постоянное отслеживание и улучшение процесса выполнения задач
⭐️ четкие критерии начала и завершения задач
⭐️ совещания команды, чтобы искать пути улучшения потока работы

Основной инструмент методологии — канбан-доска, разделенная на столбцы, соответствующие этапам процесса. Например, такие:

1️⃣ Backlog: задачи, которые нужно выполнить в будущем
2️⃣ To Do: задачи, готовые к выполнению
3️⃣ In Progress: задачи, которые сейчас выполняются
4️⃣ Testing: задачи, которые проходят тестирование
5️⃣ Done: завершенные задачи

Чем же канбан отличается от Scrum?

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

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

🔥 — если пользовались системой канбан
👀 — если не доводилось сталкиваться с ней на практике

#япознаюмир#канбан
Друзья, это новый понедельник и новая задача! 😍

Джонатан написал на доске последовательность чисел:

1, 11, 21, ..., 3112, 211213, 312213, 212223, ... 


Он попросил у Тимура вставить в нее пропущенное число, а также дописать следующий элемент последовательности.

🧐 А вы справитесь с этой задачей?

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

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

🔥 — если помните, кто такой Джонатан
👀 — если впервые увидели этого персонажа в нашем канале

#поколениеpython#задача
Друзья, продолжаем рубрику "Слово недели". Сегодня поговорим об интерпретаторах.

📎В отличие от компилятора, интерпретатор не переводит исходную программу заранее и целиком в машинный код, а построчно принимает команды и сразу же выполняет их. Этот процесс называется интерпретацией кода.

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

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

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

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

😊Преимуществом такой реализации по сравнению с чистой интерпретацией является бóльшая производительность.

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

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

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

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

#словонедели#поколениеpython
Друзья, подводим итоги розыгрыша доступов к курсам Павла Хошева! 😍

Приятно, когда у конкурса не один, а сразу три победителя! Вот и они, любимчики великого рандома:

🟢Анна Баранова получает доступ к курсу "Асинхронный Python"
🟢Илья Горбачев получает доступ к курсу "Многопоточный Python"
🟢Наталья Крейер получает доступ к курсу "Многопроцессорный Python"

Промокод ПОКОЛЕНИЕ дает скидку 30% на покупку всех курсов Паши Хошева.

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

❤️ — если рады за победителей
😈 — если рады, но не от всего сердца

#поколениеpython#розыгрыш
Друзья, а вот и разбор задачи про уточек! 🦆

Уточка-Бэтмен самая маленькая в своем ряду. Значит, она меньше той уточки, которая стоит на пересечении своего ряда с колонной уточки-Халка, в которой уточка-Халк самая большая. Значит, уточка-Халк больше уточки-Бэтмена. 😎

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

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

#разборзадачи
Друзья, продолжаем радовать вас подарками ко дню рождения Python! 😎

Поскольку языку программирования Python в этом году исполняется 34 года, мы делаем скидку 34% при покупке наших платных курсов:

🔘курс для профессионалов
🔘курс по ООП
🔘курс по базам данных и SQL

😮 Вместо 6900 рублей цена за курс составит всего 4500 рублей!

🚨🚨⚠️🚨☝️ Чтобы получить скидку, купите курс через наш официальный сайт и введите промокод PYTHON34.

☝️☝️☝️☝️ Промокод можно активировать только 0️⃣ раз, поэтому не откладывайте покупку! Если у вас не получилось активировать промокод, значит, активации уже закончились. 😥

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

🔥 — если планируете отметить день рождения Python
👀 — если ваш способ отметить — пройти пару уроков в курсе

#поколениеpython#скидки#акция#ооп#sql#профи
Друзья, 20 февраля отмечает день рождения наш с вами любимый язык программирования! 🖥

Прошло ровно 34 года с тех пор, как Гвидо ван Россум опубликовал первую версию Python в группе новостей alt.sources. ⚠️

В честь нашего общего праздника "Поколение" подготовило подарки по схеме 5+5:

♥️сделай заказ в магазине мерча на сумму от 5 тысяч рублей
♥️получи подарки на 5 тысяч рублей

Что положим в подарок:

♥️уникальную мягкую игрушку Гофера
♥️тетрис-дженгу
♥️уточку-супергероя
♥️брелок с уточкой-Бэтменом
♥️5 блокнотов
♥️3 пары носков

🚨🚨⚠️🚨☝️ Чтобы получить подарок, при оформлении заказа в онлайн-магазине "Поколения" активируйте промокод ПОДАРОКНА5ТЫСЯЧ.

☝️☝️☝️☝️ Количество подарков ограничено, поэтому промокодов всего 3️⃣ штуки! Если у вас не получилось активировать промокод, значит, они уже закончились. 😥

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

🔥 — если знали про день рождения Python
👀 — если узнали о нем впервые

#поколениеpython#мерч#акция
Друзья, сегодня поговорим о нормализации реляционных баз данных.

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

❤️ Существует несколько наборов правил нормализации баз данных, каждый из которых называется нормальной формой.

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

❤️ Процесс перехода от одной нормальной формы к следующей представляет собой усовершенствование базы данных.

❤️ Существует пять основных нормальных форм: первая, вторая, третья, четвертая и пятая. Иногда выделяют еще три дополнительные формы: шестая, нормальная форма Бойса-Кодда и доменно-ключевая нормальная форма.

❤️ База данных считается нормализованной, если она находится как минимум в третьей нормальной форме.

❤️Первая нормальная форма включает следующие правила:

❤️в таблице не должно быть полей с одинаковым смыслом
❤️в каждой ячейке таблицы должно находиться одиночное несоставное значение
❤️таблица должна иметь первичный ключ

❤️Вторая нормальная форма включает следующие правила:

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

❤️Третья нормальная форма включает следующие правила:

❤️таблица должна находиться во второй нормальной форме
❤️каждое неключевое поле таблицы должно зависеть только от первичного ключа и ни от какого другого неключевого поля

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

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

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

❤️ — если знали, что такое нормализация баз данных
👀 — если слышите этот термин впервые

#поколениеpython#базыданных
Друзья, продолжаем учить английские слова, полезные для программистов. Сегодня поговорим о названиях символов: математических и не только. 🤓

🟢 hyphen / dash
🟢 minus
🟢+ plus
🟢. dot / point
🟢% percent
🟢= equals
🟢x multiply
🟢÷ divide by
🟢? question mark
🟢# hashtag
🟢/ forward slash / or
🟢[ ] brackets
🟢( ) parentheses
🟢, comma
🟢: colon
🟢; semi-colon
🟢@ at sign
🟢'' '' quotation marks
🟢_ underscore
🟢& and sign / ampersand
🟢* asterisk
🟢{} braces
🟢| pipe
🟢! exclamation mark
🟢' apostrophe

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

🔥 — если знали все или почти все слова
👀 — если узнали много нового

#английскийдляпрограммистов
Друзья, принесли вам задачу про лучших друзей программистов. 🦆

🟢 Тимур выстроил свою коллекцию из 200 резиновых уточек в 10 рядов по 20 уточек в каждом.
🟢 В каждом ряду он выбрал самую маленькую уточку, а из выбранных 10 уточек взял самую большую. Это оказалась уточка-Бэтмен.
🟢 Затем в каждой колонне Тимур выбрал самую большую уточку, а из выбранных 20 уточек взял самую маленькую. Это оказалась уточка-Халк.

Кто больше: уточка-Бэтмен или уточка-Халк? 🤔

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

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

🔥 — если любите сортировать все подряд
👀 — если предпочитаете хаос

#задача
Друзья, принесли вам новое слово недели! Сегодня поговорим о компиляторах. 😌

📎 Изначально компьютер не понимает код, написанный на языке программирования. Язык компьютера — это машинный код. Он состоит из нулей и единиц, в которых зашифрованы команды. Писать на машинном коде слишком сложно, поэтому появились различные языки программирования, понятные для людей, и компиляторы, которые переводят эти языки в машинный код, понятный компьютеру.

✔️ Компилятор читает текст программы на исходном языке программирования, делает его перевод и создает набор машинных кодов, который затем выполняется компьютером. Данный процесс называется компиляцией.

📎 Языки программирования, для перевода которых используются компиляторы, называются компилируемыми. К ним относятся C, C++, Rust, Go и многие другие.

✔️ Компиляторы, в свою очередь, также пишут на различных языках программирования. Например, один из компиляторов языка Go частично написан на C++, самый первый компилятор C++ — на ассемблере, а ассемблер — на машинных кодах. 😨 Написать компилятор для языка программирования можно и на этом же языке. Например, большинство современных компиляторов для языков C и C++ написано на C и C++.

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

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

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

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

#словонедели#поколениеpython
Друзья, проводим розыгрыш бесплатных доступов к курсам Павла Хошева! 😍

😎Павел Хошев — автор курсов на Stepik по языку Python. На данный момент он разработал четыре курса, почитать подробности можно по ссылке.

Мы разыграем доступ к трем курсам Павла Хошева:

💙Многопроцессорный Python
💛Многопоточный Python
🧡Асинхронный Python

Как принять участие в розыгрыше:

1⃣ убедитесь, что вы подписаны на канал
2⃣ поставьте лайк ❤️ этому посту
3⃣ напишите в комментариях название курса, который вы хотите пройти

Правила розыгрыша🧑‍⚖️

😎 Ответы принимаются до 22 февраля
😌 Можно отправить только одно сообщение с одним названием курса
😡 Редактировать сообщения нельзя

Промокод ПОКОЛЕНИЕ дает скидку 30% на покупку всех курсов Паши Хошева.

#поколениеpython#розыгрыш
Друзья, а вот и разбор задачи про три числа Фибоначчи.

✔️ Из неравенства A < B < C мы знаем, что все числа разные и А — наименьшее из них. Равенство B^A = С^A будет верным, если B = C или A = 0. Первый вариант не подходит, значит, А = 0.

Остается подобрать числа B и C. Из равенства A + B + С = 2592 отбрасываем число А. Так как В < C, будем последовательно перебирать числа Фибоначчи и подставлять их вместо В в равенство В + С = 2592.

Рассмотрим числа Фибоначчи:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, ...

Числа 1, 2, 3 и 5 не подходят, так как при их подстановке число С не будет являться числом Фибоначчи:

🟢1 + С = 2592 —> С = 2591
🟢2 + С = 2592 —> С = 2590
🟢3 + С = 2592 —> С = 2589
🟢5 + С = 2592 —> С = 2587

✔️ Однако при В = 8 мы получим число С, которое является числом Фибоначчи:

🟢8 + С = 2592 —> С = 2584

Таким образом:

А = 0
В = 8
С = 2584

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

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

#разборзадачи
Друзья, поздравляем вас с Днем всех влюбленных! ❤️

Мы считаем, что тексты на обычных валентинках слишком скучные и не подходят настоящим программистам. 😞

Давайте накидаем в комментариях свои версии поздравлений для настоящих pyladies и pygentlemen! 😁

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

❤️ — если отмечаете День святого Валентина
👀 — если вам не близок этот праздник

#поколениеpython
Друзья, в одном из предыдущих постов мы говорили о кодах состояния HTTP. Сегодня рассмотрим наиболее популярные клиентские и серверные ошибки. 😨

❤️ Клиентские ошибки представлены кодами состояния 4**:

400 Bad Request
Означает неверный запрос и может возникнуть, например, если запрос не соответствует определенному формату или в нем допущена синтаксическая ошибка.

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

403 Forbidden
Означает, что доступ к запрашиваемому ресурсу запрещен. Эта ошибка возникает, когда клиент пытается получить доступ к контенту, но у него нет на это необходимых прав.

404 Not Found
Пожалуй, самая знаменитая ошибка в Интернете. Она означает, что сервер не может найти запрошенный ресурс. Наиболее частой причиной возникновения этой ошибки является указание неверного адреса веб-страницы.

❤️ Серверные ошибки представлены кодами состояния 5**:

500 Internal Server Error
Означает, что на сервере произошла ошибка, в результате которой он не может успешно обработать запрос. Причиной ошибки может быть избыточная нагрузка на сервер, сбой в работе серверного ПО, программная ошибка или проблема с базой данных.

503 Service Unavailable
Возникает, когда сервер не готов обработать запрос в данный момент. Распространенными причинами ошибки являются техническое обслуживание или перегрузка сервера.

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

🙈 — если сталкивались с серверными ошибками на Stepik
😎 — если ни разу не встречали их на Stepik

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

#python#полезныйматериал#http#кодсостояния
Друзья, разбираем вопрос с собеседований!

✔️Множественное наследование — это тип наследования, в котором класс наследуется одновременно от двух или более классов. В этом случае дочерний класс наследует все атрибуты и методы всех родительских классов.

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

class Parent1:  # первый родительский класс
pass

class Parent2: # второй родительский класс
pass

class Child(Parent1, Parent2): # дочерний класс
pass


🤩Множественное наследование является потенциальным источником ошибок, которые могут возникнуть из-за наличия одинаковых имен атрибутов и методов в родительских классах. В Python данная проблема решается с помощью MRO.

✔️MRO (Method Resolution Order) — это порядок, в котором просматриваются классы во время поиска метода в иерархии классов при наследовании. Он определяется для каждого класса индивидуально в зависимости от его иерархии.

Для получения MRO класса можно воспользоваться методом mro(). Его результатом является список родителей класса, включая сам класс и базовый класс object, расположенных в том порядке, в котором будет производиться поиск методов. Зная MRO класса, мы всегда можем определить, какой метод будет унаследован этим классом.

Приведенный ниже код:
class Parent1:
def method(self):
print('Метод класса Parent1')

class Parent2:
def method(self):
print('Метод класса Parent2')

class Child(Parent1, Parent2):
pass


print(*Child.mro(), sep='n')

c = Child()
c.method()


выводит:




Метод класса Parent1

📌 Помните, умение проходить собеседование — это тоже навык, и ему можно научиться! 😉

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

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

#поколениеpython#собеседования
Друзья, самые внимательные уже заметили, что на нашем сайте pygen.ru появились анонсы новых курсов. 😉

Делимся подробностями! 😍

После выхода "Алгоритмов и структур данных для начинающих" запланированы три курса:

🔎Алгоритмы и структуры данных для продвинутых — поскорее выпустим сиквел для тех, кому не хватит первой части. Темы:

😁быстрые сортировки
😘рекурсивные алгоритмы
😘жадные алгоритмы
😁динамическое программирование
😘деревья
😘и многое другое

🥷Курс для самураев — долгожданное продолжение курса для профессионалов и ООП! Темы:

😁моржовый оператор
😘оператор match case
😘система импорта
😁модули и пакеты
😘логирование
😘и многое другое

🧮Математика для программистов — давняя мечта создателя "Поколения" Тимура Гуева близка к воплощению. Темы:

😁математический анализ
😘теория вероятностей
😘статистика
😁алгебра
😘геометрия
😘и многое другое

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

🚨🚨⚠️🚨☝️ Уже сейчас можно подписаться на новости, чтобы первым узнать о выходе курсов.

😍 Пишите в комментариях вопросы по запланированным курсам, а мы постараемся удовлетворить ваше любопытство!

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

👍 — если ждете курс для самураев
❤️ — если ждете алгоритмы для продвинутых
🔥 — если ждете математику для программистов

#поколениеpython
See more posts

View in Telegram