Поколение Python 🐍
50.3K subscribers
2K photos
16 videos
6 files
866 links
Серия курсов по языку Python от BEEGEEK 🐝.

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

Перечень РКН: https://www.gosuslugi.ru/snet/673650d605391b3bfb5541c0
Download Telegram
Друзья, сегодня поговорим об агрегатных функциях в SQL. 😌

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

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

🔠AVG() — вычисляет среднее арифметическое числовых значений поля

🔠COUNT() — вычисляет количество записей в таблице или количество значений в поле

🔠MIN() и MAX() — выполняют поиск минимального и максимального значений поля соответственно

🔠SUM() — вычисляет сумму числовых значений поля

🔠GROUP_CONCAT() — используется для перечисления значений поля через запятую

❤️ В общем виде запрос с применением агрегатной функции можно представить следующим образом:

SELECT функция(<имя поля>) AS <имя итогового поля>
FROM <имя таблицы>

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

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

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

🔥 — если знали об агрегатных функциях
👀 — если слышите о них впервые

#поколениеpython #базыданных #sql
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥106👀30👍77❤43😱1👾1
Друзья, хотим напомнить о возможности получить наши фирменные сертификаты о прохождении курсов "Поколения Python"! 😎

Сертификаты доступны в двух форматах: электронном и бумажном.

1️⃣ Получить электронные сертификаты можно по ссылке:

🔗 https://pygen.ru/cert

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

2️⃣ Бумажный сертификат можно получить при покупке мерча в онлайн-магазине "Поколения Python". Мы бесплатно положим в посылку ваши сертификаты и отправим вам.

☝️☝️☝️☝️ Подготовка сертификата занимает до трех рабочих дней. За это время мы проверяем корректность личных данных нашего студента и факт завершения соответствующих курсов. После этого сертификат будет отправлен на электронную почту, указанную при оформлении заявки.

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

🔥 — если собираете все сертификаты, дипломы и удостоверения
👀 — если не понимаете, зачем это делать

#поколениеpython #сертификат
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥65👀4311👍8❤33😁2🤔2👏1🤝1🆒1
Друзья, разбираем задачу с собеседований. 😍

🧡 Данную задачу можно решить несколькими способами. Рассмотрим один из наиболее эффективных:

def max_consecutive_elements(s):
if not s:
return 0

max_count = cur_count = 1

for i in range(1, len(s)):
if s[i] == s[i - 1]:
cur_count += 1
else:
max_count = max(max_count, cur_count)
cur_count = 1

return max(max_count, cur_count)


Здесь мы используем два счетчика:

🧡cur_count — для подсчета длины текущей последовательности одинаковых символов
🧡max_count — для хранения максимальной длины последовательности одинаковых элементов

Проходим по строке и сравниваем текущий символ с предыдущим:

🧡если символы равны, это означает, что текущая последовательность одинаковых символов продолжается, поэтому увеличиваем cur_count на единицу

🧡если символы разные, это означает, что текущая последовательность одинаковых символов завершилась, поэтому нужно сравнить ее длину cur_count с текущим максимальным значением max_count, обновить последнее в случае необходимости и сбросить cur_count до единицы, так как начинается новая последовательность с текущего символа

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

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

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

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

#поколениеpython #собеседования #разборзадачи
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥46👀13👍9❤222🏆1😇1
❤13🔥10👨‍💻76
Что покажет приведенный выше код?
Anonymous Quiz
30%
6
21%
9
6%
0
43%
произойдет ошибка
😁87🤔27👍146🤯5🤣4🔥2
Друзья, сегодня поговорим о том, что означает ошибка TypeError: <type> object is not iterable.

Данная ошибка возникает при попытке проитерировать объект, который не является итерируемым.

😳 Где же мы ошиблись в нашей программе?

Дело в том, что мы пытаемся перебрать в цикле for длину списка numbers — целое число, полученное в результате вызова функции len():

for i in len(numbers):


Целые числа (тип int) не являются итерируемыми объектами, поэтому при выполнении программы возникает ошибка TypeError: 'int' object is not iterable.

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

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

numbers = [4, 1, 5, 3, 2]
total = 0

for i in range(len(numbers)):
number = numbers[i]
if number % 2:
total += number

print(total)


выводит 9.

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

😎 — если сразу нашли ошибку
👀 — если ошибку отыскать не удалось

#python #полезныйматериал #чтоозначаетошибка
Please open Telegram to view this post
VIEW IN TELEGRAM
😎110👀86👍16🔥3❤2👏2😁2🤩1
Друзья, а как бы вы описали свой типичный рабочий день в трех эмодзи? 😄

(Ладно, можно использовать больше)

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

🔥 — если рады окончанию рабочей недели
👀 — если у вас рабочая суббота или сменный график

#поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
60🔥115👀37🤩8👍2😢2🙉2👾2✍1❤‍🔥1🗿11
Друзья, давайте разберем задачу про процент трехзначных чисел, которые делятся на 25.

⭐️ Чтобы число делилось на 25, оно должно оканчиваться на 00, 25, 50 или 75. Давайте посчитаем, сколько всего таких чисел: 100, 125, 150, 175 — и так далее, по 4 числа в каждой сотне.

⭐️ Всего у нас 9 сотен. Получается, что таких чисел 9 * 4 = 36.

⭐️ Существует всего 900 трехзначных чисел: от 100 до 999. Чтобы посчитать процент того, что случайное число делится на 25, нужно 36 разделить на 900:

36/900 = 0,04, то есть 4%.

Выходит, что ошиблись и Тимур, и Артур. 😁

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

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

#поколениеpython #разборзадачи
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥78👍11👀9❤5🥰1💯1👾11
Друзья, успели соскучиться по розыгрышам? А мы принесли новый! 😁

🔤🔤🔤🔤🔤🔤🔤

✅ Оставьте звезды под этим постом до 27 апреля
✅ Тот, кто оставит больше всего звезд, получит бесплатный доступ к любому платному курсу на выбор

Развитие телеграм-канала — это большая и сложная задача. Мы пишем посты и сторис, делаем картинки, отвечаем на вопросы в комментариях и следим за порядком в чате. 😉

Полученные "звезды" мы потратим на продвижение нашего канала в Telegram, чтобы студентов "Поколения" стало еще больше! 😍

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

🔥 — если считаете себя везучим
👀 — если вы не слишком удачливы

#поколениеpython #розыгрыш #звезды
Please open Telegram to view this post
VIEW IN TELEGRAM
3.39K👀61🔥25👍17109❤4😁2❤‍🔥1😱1😢1👌1
Друзья, продолжаем рубрику "Слово недели". Сегодня поговорим о деплое программного обеспечения. 😵‍💫

🟪Деплой (от англ. deploy — развертывание) является одним из ключевых этапов в разработке ПО, который связывает написание кода и его реальное использование. Задеплоить — это значит сделать программу доступной для пользователей.

К основным этапам деплоя ПО относятся:

▫запуск и настройка сервера
▫проверка системы на работу в имитации реальных условий
▫организация доступа для реальных посетителей и клиентов
▫мониторинг (отслеживание состояния системы)

Деплой ПО обеспечивает:

1⃣доступность ПО для пользователей: без деплоя код останется просто текстом на компьютере разработчика

2⃣обновления и улучшения ПО: деплой позволяет внедрять новые функции, исправлять ошибки и улучшать производительность кода

3⃣автоматизацию процессов: современные подходы к деплою позволяют автоматизировать рутинные задачи, что ускоряет разработку и снижает вероятность ошибок

4⃣масштабируемость системы: деплой помогает адаптировать приложение под растущие нагрузки, добавляя новые серверы или ресурсы

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

👩‍💻 Примером популярных инструментов для деплоя ПО является Docker — платформа, которая позволяет упаковать приложение в контейнер со всем необходимым окружением, а затем доставить и запустить его в целевой системе.

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

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

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

#словонедели #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
6👀95🔥88❤77👍62🤩1🏆1
Друзья, предлагаем размять логическое мышление и решить задачку!

Дана последовательность цифр, часть из которых скрыта за цветками:

1🌸🌸🌸🌸🌸🌸🌸7

Сумма любых трех соседних цифр в этой последовательности равна 15.

😄😉😌😍😉🥰 Какая цифра расположена на втором месте (то есть скрыта за первым цветком)?

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

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

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

#поколениеpython #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥70👀52❤76👍54⚡3🏆2❤‍🔥1
Друзья, сегодня хотим рассказать вам об интересном методе принятия решений — квадрате Декарта. 😎

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

😄 Как использовать квадрат Декарта:

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

Давайте попробуем разобраться на примере!

Вася работает бухгалтером, но хочет попробовать себя в профессии программиста. Оценим его решение с помощью квадрата Декарта!


❤️Что будет, если я это не сделаю?
Стабильный доход и привычный коллектив.

❤️Чего не будет, если я это не сделаю?
Удалёнки и значительного роста зарплаты в обозримом будущем. Стресса от новых обстоятельств и повышенной нагрузки.

❤️Что будет, если я это сделаю?
Возможность заниматься тем, что нравится. Перспектива карьерного роста. Период без стабильного дохода, пока буду искать работу. Стресс от собеседований.

❤️Чего не будет, если я это сделаю?
Мгновенного успеха и золотых гор. Ежедневного раздражения от необходимости вставать на работу.

⏰⏰⏰⏰⏰⏰⏰ Кстати, в этом посте мы рассказывали о том, чем знаменит Декарт, кроме интересного способа принятия решений. 😉

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

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

#поколениеpython #япознаюмир #декарт #квадратдекарта
Please open Telegram to view this post
VIEW IN TELEGRAM
62👀92🔥71❤117👍5🙉22😎1👾1
Друзья, принесли вам новый вопрос с собеседований! 😉

Что означает приведенная ниже конструкция?

if __name__ == '__main__':
...


Для чего она используется? Объясните механизм ее работы.

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

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

🧑‍💻 — если считаете, что к собесам всегда нужно готовиться
👀 — если считаете, что к собесам подготовиться невозможно

#поколениеpython #собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻120👀3210❤4🆒22👍1🔥1🎉1
Друзья, сегодня поговорим о концепции префиксных сумм. 😉

📍Префиксные суммы — это метод оптимизации решения алгоритмических задач. Рассмотрим его суть на примере.

Предположим, нам дан список, состоящий из целых чисел:

nums = [34, 7, 23, 89, 12, 45, 67, 3, 78, 56, ...]

Требуется отвечать на следующие запросы: чему равна сумма элементов списка nums на промежутке индексов от l до r?

nums[l] + nums[l + 1] + nums[l + 2] + ... + nums[r]

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

🤩Решение 1. Для ответа на каждый запрос мы можем итерировать список и вычислять сумму нужных элементов:

result = 0

for i in range(l, r + 1):
result += nums[i]


При таком подходе временнáя сложность ответа на каждый запрос составляет O(n), где n — длина списка nums, а общая временнáя сложность решения при m запросов равна O(nm).

🤩Решение 2. До начала поступления запросов создадим вспомогательный список p длиной на единицу больше длины списка nums. На i-й позиции списка p будем хранить сумму первых i элементов списка:

p[0] = 0
p[1] = nums[0]
p[2] = nums[0] + nums[1]
p[3] = nums[0] + nums[1] + nums[2]
...

*️⃣Список p называется списком префиксных сумм, потому что префикс — это любая начальная часть некоторого списка. Например, префиксами списка [1, 2, 3] являются [1], [1, 2] и [1, 2, 3].

Теперь когда нам поступит запрос вычислить сумму элементов списка на отрезке [l; r], в списке p уже будет находиться множество заранее вычисленных сумм. В частности, там будет присутствовать сумма элементов на отрезке [0; r]:

nums[0] + nums[1] + nums[2] + ... + nums[r]

а также сумма элементов на отрезке [0; l - 1]:

nums[0] + nums[1] + nums[2] + ... + nums[l - 1]

Поэтому чтобы вычислить сумму элементов списка nums на отрезке [l; r], будет достаточно вычесть из суммы элементов на отрезке [0; r] сумму элементов на отрезке [0; l - 1]:

n = len(nums)   
p = [0] * (n + 1)

for i in range(1, n + 1):
p[i] = p[i - 1] + nums[i - 1]

result = p[r + 1] - p[l]


Таким образом, временнáя сложность ответа на один запрос будет равна всего лишь O(1). Общая временнáя сложность решения при m запросов с учетом создания вспомогательного списка p составит O(n+m), где n — длина списка nums.

😌 Cоздание списка префиксных сумм эффективно только тогда, когда начальные данные, на которых производились подсчеты, всегда остаются неизменными.

☝️☝️☝️☝️ Префиксные суммы подробно рассматриваются в нашем курсе "Алгоритмы и структуры данных для начинающих". Купить курс можно на нашем официальном сайте по ссылке.

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

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

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

#поколениеpython #курспоалгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
👀87👍29🔥2274✍2❤1
Друзья, мы подготовили весенний подарок для покупателей магазина мерча! 😍

🌸 При покупке от 3000 рублей положим в подарок:

➡️ бирюзовый свитшот (стоимость 2490 рублей)
➡️ 5 пар носков (стоимость 1490 рублей)

🌸 При покупке от 5000 рублей дополнительно положим:

➡️ 5 блокнотов (стоимость 1200 рублей)
➡️ гравитационный таймер (стоимость 990 рублей)

Правила акции:

🟢Подарок действует по промокоду ВЕСНА. Доступно всего 5 активаций промокода
🟢Дизайны на подарочном мерче вы выбираете сами из доступных на сайте! После оформления заказа с вами свяжется администратор и уточнит принт и размер свитшота
🟢Срок действия акции — до 28 апреля (понедельник) включительно

🚨 Доступные размеры бирюзовых свитшотов:

S — 1 шт.
L — 5 шт.
XL — 1 шт.

🦸‍♂️ Самый классный 🛍🛍🛍 для программистов в онлайн-магазине "Поколения"!

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

🔥 — если любите носить свитшоты
👀 — если это не ваш стиль одежды

#поколениеpython #мерч
Please open Telegram to view this post
VIEW IN TELEGRAM
61🔥32👀14❤8👾33👍22❤‍🔥1
Друзья, сегодня поговорим про антипаттерны.

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

😬 К наиболее распространенным антипаттернам относятся:

🌱Spaghetti Code (спагетти-код)

Описание: в коде отсутствует структура, а логика запутана и сложна для понимания
Проблема: код трудно читать, поддерживать и расширять
Решение: разделить код на функции, каждая из которых будет иметь четкую ответственность

🌱God Object (божественный объект)

Описание: класс или объект, который выполняет слишком много задач
Проблема: код становится сложным для тестирования и поддержки
Решение: разделить функциональность на несколько классов

🌱Premature Optimization (преждевременная оптимизация)

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

🌱Cargo Cult Programming (программирование по шаблону)

Описание: использование практик и кода без понимания, зачем они нужны
Проблема: код может быть избыточным или неподходящим для задачи
Решение: понимать, зачем используются те или иные инструменты, а не копировать примеры кода вслепую

🌱Reinventing the Wheel (изобретение велосипеда)

Описание: написание кода для решения задачи, для которой уже есть готовые инструменты
Проблема: тратится время на решение уже решенных задач
Решение: знать и использовать существующие инструменты

😉 Антипаттерны — это не всегда плохо. Иногда они возникают из-за ограничений времени или ресурсов. Главное — вовремя их замечать и исправлять.

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

🔥 — если знали об антипаттернах
👀 — если слышите о них впервые

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

#поколениеpython #полезныйматериал #python
Please open Telegram to view this post
VIEW IN TELEGRAM
21👀130🔥61✍15👍1255❤1👏1🫡1
Друзья, давайте разберем задачу про цифры и цветы!

1🌸🌸🌸🌸🌸🌸🌸7

1⃣Поскольку сумма трех последних цифр равна 15, а последняя цифра равна 7, то сумма шестого и седьмого цветков равна 15 - 7 = 8.

2⃣Поскольку сумма пятого, шестого и седьмого цветков тоже равна 15, то пятый цветок равен 15 - 8 = 7.

3⃣Отсюда получаем, что сумма третьего и четвертого цветков равна 15 - 7 = 8.

4⃣Следовательно, третий цветок равен 15 - 8 = 7.

5⃣ И наконец, второй цветок равен 15 - 7 - 1 = 7.

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

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

#разборзадачи
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥61👀207❤‍🔥3👍2🥰2🆒22❤1
Друзья, отвечаем на вопрос с собеседований. 😌

🔖 В Python конструкция if __name__ == "__main__": используется для определения точки входа — места, где программа начинает свое выполнение.

Условие if __name__ == "__main__": позволяет различать, когда модуль запускается как основная программа, а когда он импортируется в другой модуль.

Данная конструкция включает два компонента:

🔵__name__ — атрибут модуля, который хранит его имя
🔵__main__ — имя модуля верхнего уровня, который содержит в себе импорт других модулей и предназначен для непосредственного запуска программы

Когда мы запускаем модуль напрямую, его атрибут __name__ принимает значение __main__. Поэтому все инструкции, помещенные в тело условия if __name__ == '__main__':, будут выполнены.

Когда мы запускаем модуль не напрямую, а импортируем его в другие модули, атрибут __name__ этого модуля принимает значение имени самого модуля. Поэтому все инструкции, помещенные в тело условия if __name__ == '__main__':, выполнятся не будут.

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

✅ Также конструкция if __name__ == '__main__': может использоваться для предотвращения выполнения инструкций импортируемого модуля. При импорте модуля интерпретатор Python выполняет все его инструкции. Если модуль содержит код, который мы бы не хотели выполнять при его импорте, нужно поместить этот код в тело условия if __name__ == '__main__':.

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

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

#поколениеpython #собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥57👀47196👍5❤2🥰1🙉1
Друзья, а вот и итоги розыгрыша за звезды! ⭐️

😍 Больше всего звезд на посте с розыгрышем оставили:

🔘 Андрей (@andreypytthon) получает доступ к курсу по алгоритмам
🔘Валерий (@BobaFett95) получает доступ к курсу для профи

☝️☝️☝️☝️ Все звезды, которые вы ставите нашим постам, мы тратим на продвижение нашего канала в Telegram, чтобы студентов "Поколения" становилось еще больше!

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

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

#поколениеpython #розыгрыш #звезды
Please open Telegram to view this post
VIEW IN TELEGRAM
311🔥84😈434👏33👍2🎉2💋1
Друзья, принесли вам новое слово недели! Сегодня поговорим про Git. 😍

❤️ Git является одной из самых популярных систем контроля версий. Он был создана Линусом Торвальдсом в 2005 году для управления разработкой ядра Linux.

Git предоставляет возможность:

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

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

Делимся с вами полезными ресурсами по изучению Git: 😉

❤️Официальный сайт проекта Git
❤️Книга Pro Git
❤️Интерактивный курс по Git
❤️Тренажер по Git
❤️Учебные материалы по Git
❤️Основы работы с Git (Яндекс)

Забавный факт: Git в переводе с английского означает "мерзавец". Торвальдс с самоиронией признался, что считает себя тем еще эгоистом, поэтому называет проекты в свою честь: сначала Linux, потом Git... 😄

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

🔥 — если активно используете Git
👀 — если пока не работали с этим инструментом

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

#словонедели #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
👀86🔥7122👍12❤33🤔2✍1🙏1🆒1