Друзья, подводим итоги розыгрыша! 😉
🎲 Великий рандом выбрал победителем Тимура (@Timur_exe). Он получает книгу "Теория игр" Авинаша Диксита и Барри Нейлбафа, а также мерчбокс от "Поколения".
✅ Проверить результаты конкурса можно по ссылке.
Ставьте реакцию:
🔥 — если рады за победителя
😈 — если рады, но не от всего сердца
#поколениеpython #розыгрыш #теорияигр
✅ Проверить результаты конкурса можно по ссылке.
Ставьте реакцию:
🔥 — если рады за победителя
😈 — если рады, но не от всего сердца
#поколениеpython #розыгрыш #теорияигр
Please open Telegram to view this post
VIEW IN TELEGRAM
51🔥139😈93❤14🎉8👍3 3 3 2❤🔥1
Друзья, сегодняшний пост будет посвящен глобальной блокировке интерпретатора (GIL). 🚫
Для начала рассмотрим, что такое поток.
📌 Поток — это базовая единица, которой операционная система выделяет процессорное время для выполнения каких-либо вычислений. Программы на Python по умолчанию имеют один основной поток.
Python позволяет создать несколько потоков. Но часто многопоточная программа выполняется дольше, чем аналогичная однопоточная.😮 Это происходит из-за накладных расходов на создание и управление потоками, а также из-за ограничений GIL.
☝️ GIL (Global Interpreter Lock) — это блокировка (мьютекс), которая гарантирует, что только один поток может находиться в состоянии выполнения в любой момент времени.
📌 GIL необходим, так как система управления памятью в Python не является потокобезопасной. Python использует механизм подсчета ссылок. Каждый созданный объект имеет специальную переменную, которая отслеживает количество ссылок, указывающих на этот объект. Когда количество ссылок на объект достигает нуля, занимаемая объектом память освобождается.
😱 В многопоточном приложении сразу несколько потоков могут изменить значение счетчика ссылок. Это может привести к неправильному освобождению или утечке памяти. Данная ситуация называется состоянием гонки. GIL отвечает за синхронизацию потоков и защиту счетчика ссылок от условий гонки.
❗️ В основе механизма работы GIL лежит правило: каждому потоку для выполнения своих задач требуется получение блокировки. Поток, который выполняется в текущий момент, захватывает GIL и удерживает его. Остальные потоки ничего не делают и ожидают освобождения GIL. Когда работающий поток завершает свое выполнение, он освобождает GIL, а другой поток снова захватывает его.
Поскольку GIL позволяет выполнять одновременно только один поток, он заработал репутацию "печально известной" функции Python. 😭
Ставьте реакцию:
🔥 — если знали, что такое GIL
👀 — если слышите об этом впервые
#GIL #поколениеpython #мьютекс #словонедели
Для начала рассмотрим, что такое поток.
📌 Поток — это базовая единица, которой операционная система выделяет процессорное время для выполнения каких-либо вычислений. Программы на Python по умолчанию имеют один основной поток.
Python позволяет создать несколько потоков. Но часто многопоточная программа выполняется дольше, чем аналогичная однопоточная.
📌 GIL необходим, так как система управления памятью в Python не является потокобезопасной. Python использует механизм подсчета ссылок. Каждый созданный объект имеет специальную переменную, которая отслеживает количество ссылок, указывающих на этот объект. Когда количество ссылок на объект достигает нуля, занимаемая объектом память освобождается.
Поскольку GIL позволяет выполнять одновременно только один поток, он заработал репутацию "печально известной" функции Python. 😭
Ставьте реакцию:
🔥 — если знали, что такое GIL
👀 — если слышите об этом впервые
#GIL #поколениеpython #мьютекс #словонедели
Please open Telegram to view this post
VIEW IN TELEGRAM
👀129🔥60 7❤5👍2 2💔1💋1🆒1 1 1
Друзья, сегодня очень загадочная задача. 😎
Артур предложил Тимуру: пусть каждый загадает натуральное число меньше 100. Артур и Тимур не знают числа друг друга, но Тимур утверждает, что сумма цифр произведения загаданных ими чисел будет равна 18.
👀 Какое число загадал Тимур, раз он так уверен в своем утверждении? Пишите ответы в комментариях, не забывая прятать их под скрытым текстом.
Ставьте реакцию:
🔥 — если любите игры с числами
👀 — если не играете в такое
#поколениеpython #задача
Артур предложил Тимуру: пусть каждый загадает натуральное число меньше 100. Артур и Тимур не знают числа друг друга, но Тимур утверждает, что сумма цифр произведения загаданных ими чисел будет равна 18.
Ставьте реакцию:
🔥 — если любите игры с числами
👀 — если не играете в такое
#поколениеpython #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥78👀29❤9 8👏2 2🥰1😁1 1
Друзья, мы подготовили новый квест от "Поколения Python"! Он стартует 13 сентября — в День программиста. 😎
😉 Вас ждут задачи на программирование, логику и математику, а также призы для победителей:
▫️ 5 самых быстрых решателей
▫️ 5 самых точных решателей (сделавших меньше всего неверных попыток)
▫️ 5 счастливчиков, которых рандом выберет из числа решивших все задачи
⚠️ Квест будет проходить в нашем курсе на платформе Stepik, присоединяйтесь заранее! Старт — 13 сентября в 12:00 по МСК.
📢 Итоги квеста подведем 21 сентября.
🐾 🐾 🐾 🐾 🐾 🐾 🐾 Чтобы принять участие в квесте, необходимо оставить заявку на нашем сайте.
☝️ ☝️ ☝️ ☝️ Чтобы поддержать выход этого квеста, а также других квестов, марафонов и челленджей, купите любой пин-значок от "Поколения" в нашем магазине на Ozon!
Ставь реакцию 🔥 к посту, если будешь участвовать в квесте!
#поколениеpython #квест #хогвартсдляпрограммистов
🪄 В XXI веке руководство Хогвартса решило идти в ногу со временем и внедрило в учебный план изучение программирования. Теперь ученики Гриффиндора осваивают С/С++, когтевранцы — Haskell, пуффендуйцы — Java, а слизеринцы, конечно, Python.
На Слизерине учится мальчик Джордж — сын нашего старого знакомого Джонатана, сеньора небольшой европейской компании "Transilvania Limited". Джордж мечтает завладеть Кольцом Слизерина, чтобы стать настоящим змееустом и постигнуть все тонкости Python...
⚠️ Квест будет проходить в нашем курсе на платформе Stepik, присоединяйтесь заранее! Старт — 13 сентября в 12:00 по МСК.
Ставь реакцию 🔥 к посту, если будешь участвовать в квесте!
#поколениеpython #квест #хогвартсдляпрограммистов
Please open Telegram to view this post
VIEW IN TELEGRAM
104🔥137❤25 13👾3 3🏆2🆒2 2❤🔥1😁1💯1
Друзья, сегодня поговорим о структуре данных дек. 😌
⭐️ Дек (англ. deque — аббревиатура от double-ended queue, "двусторонняя очередь") — это упорядоченный набор объектов, называемых элементами дека, в котором добавление новых элементов и удаление существующих возможно с обоих концов. Один из концов обычно называется головой или началом дека, а другой — хвостом или концом дека.
🤩 Основное преимущество дека — гибкость. В отличие от стека, в котором добавление и удаление элементов происходит только с одного конца, и очереди, где добавление выполняется с одного конца, а удаление — с другого, дек поддерживает оба подхода.
Дек поддерживает восемь основных операций:
1️⃣
2️⃣
3️⃣
4️⃣
5️⃣
6️⃣
7️⃣
8️⃣
Дек, как стек или очередь, является абстрактным типом данных и может быть реализован по-разному.
Основные способы реализации дека:
✏️ на основе массива
✏️ на основе двусвязного списка
При работе с деком в Python реализовывать его самостоятельно нет необходимости. Готовая оптимизированная реализация дека доступна во встроенном модуле
‼️ Дек объединяет принципы работы стека и очереди, что позволяет ему выполнять задачи, которые обычно возлагаются на эти типы данных, обеспечивая при этом бóльшую гибкость.
Дек отлично подходит для моделирования скользящего окна, поскольку в нем добавление элемента в конец (в окно) и удаление элемента из начала (из окна) выполняются за константное время.
⏰ ⏰ ⏰ ⏰ ⏰ ⏰ ⏰ Подробнее о деке вы можете узнать в нашем курсе "Алгоритмы и структуры данных для начинающих". Купить курс можно на нашем сайте по ссылке.
Ставьте реакцию:
🔥 — если уже сталкивались с понятием "дек"
👀 — если узнали о деке впервые
#поколениеpython #дек #структурыданных
Дек поддерживает восемь основных операций:
push_back — добавление элемента в конец декаpush_front — добавление элемента в начало декаpop_back — удаление элемента из конца декаpop_front — удаление элемента из начала декаpeek_back — получение элемента из конца дека без его удаленияpeek_front — получение элемента из начала дека без его удаленияis_empty — проверка дека на пустотуsize — определение количества элементов в декеДек, как стек или очередь, является абстрактным типом данных и может быть реализован по-разному.
Основные способы реализации дека:
При работе с деком в Python реализовывать его самостоятельно нет необходимости. Готовая оптимизированная реализация дека доступна во встроенном модуле
collections в виде класса deque, который реализован на основе двусвязного списка.Дек отлично подходит для моделирования скользящего окна, поскольку в нем добавление элемента в конец (в окно) и удаление элемента из начала (из окна) выполняются за константное время.
Ставьте реакцию:
🔥 — если уже сталкивались с понятием "дек"
👀 — если узнали о деке впервые
#поколениеpython #дек #структурыданных
Please open Telegram to view this post
VIEW IN TELEGRAM
1👀90🔥43❤13 6 5 3
Друзья, мы знаем, как трудно бывает принять решение о покупке курса. Именно поэтому в каждом платном курсе "Поколения" есть открытые уроки! 😍
Мы добавили бесплатные уроки в каждый модуль, чтобы вы могли оценить качество материала на протяжении всего курса.
Делимся ссылками на все открытые уроки в курсах для профессионалов и ООП. ❤️
🌟 Бесплатные уроки в курсе для профессионалов:
🟢 Задачи на основные конструкции языка Python
🟢 Типы данных date и time. Часть 1
🟢 Потоковый ввод stdin и вывод stdout
🟢 Устройство памяти в Python
🟢 Тип данных defaultdict
🟢 Обработка исключений. Часть 1
🟢 Рекурсия. Часть 1
🟢 Функции как объекты
🟢 Итераторы. Часть 1
🟢 Регулярные выражения. Часть 2
🌟 Бесплатные уроки в курсе по ООП:
🟢 Задачи на основные конструкции языка Python
🟢 Введение в ООП
🟢 Основы и принципы ООП
🟢 Декораторы @classmethod и @staticmethod
🟢 Хеширование объектов. Часть 1
🟢 Особенности работы словарей и множеств
🟢 Протокол контекстных менеджеров. Часть 1
🟢 Контекстные менеджеры модуля contextlib
🟢 Наследование. Часть 3
🟢 Перечисления, класс Enum
⏰ ⏰ ⏰ ⏰ ⏰ ⏰ ⏰ С 10 сентября 2025 стоимость всех курсов вырастет и составит 7900 рублей. Успевайте купить курсы по старой цене на нашем сайте со скидками! 😉
Ставьте реакцию:
🔥 — если изучаете все о товаре перед тем, как его купить
❤️ — если часто покупаете не глядя
#курсы #поколениеpython
Мы добавили бесплатные уроки в каждый модуль, чтобы вы могли оценить качество материала на протяжении всего курса.
Делимся ссылками на все открытые уроки в курсах для профессионалов и ООП. ❤️
Ставьте реакцию:
🔥 — если изучаете все о товаре перед тем, как его купить
❤️ — если часто покупаете не глядя
#курсы #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥100❤29👍10 8 3😱2👏1💯1 1
Друзья, давайте обсудим, что означает ошибка 😎
Эта ошибка возникает, когда мы пытаемся обратиться к элементу списка по несуществующему индексу.
❓ Где же ошибка в нашей программе?
Мы одновременно итерируем список в цикле
Цикл находит длину списка один раз перед первой итерацией и запоминает ее. Во время работы цикла мы удаляем элементы списка, и его фактическая длина уменьшается. Однако цикл отрабатывает количество итераций, равное исходной длине списка. Это приводит к тому, что на одной из итераций мы обращаемся к списку по индексу, значение которого больше текущей длины. В результате возникает ошибка
‼️ ‼️ ‼️ ❗️ Не изменяйте список во время итераций по нему: это антипаттерн, который может привести к непредсказуемому поведению программы и ошибкам.
Проблему в нашем коде можно решить, например, с помощью списочного выражения с условием, которое позволит на этапе создания списка добавить в него лишь те элементы, которые не подлежат удалению (в нашем примере — нечетные числа).
Приведенный ниже код:
выводит
Ставьте реакцию:
😎 — если сразу нашли ошибку в коде
👀 — если ошибку отыскать не удалось
#python #полезныйматериал #чтоозначаетошибка
IndexError: list index out of range. Эта ошибка возникает, когда мы пытаемся обратиться к элементу списка по несуществующему индексу.
Мы одновременно итерируем список в цикле
for и изменяем его содержимое. Цикл находит длину списка один раз перед первой итерацией и запоминает ее. Во время работы цикла мы удаляем элементы списка, и его фактическая длина уменьшается. Однако цикл отрабатывает количество итераций, равное исходной длине списка. Это приводит к тому, что на одной из итераций мы обращаемся к списку по индексу, значение которого больше текущей длины. В результате возникает ошибка
IndexError: list index out of range.Проблему в нашем коде можно решить, например, с помощью списочного выражения с условием, которое позволит на этапе создания списка добавить в него лишь те элементы, которые не подлежат удалению (в нашем примере — нечетные числа).
Приведенный ниже код:
numbers = [num for num in range(9) if num % 2]
print(numbers)
выводит
[1, 3, 5, 7].Ставьте реакцию:
😎 — если сразу нашли ошибку в коде
👀 — если ошибку отыскать не удалось
#python #полезныйматериал #чтоозначаетошибка
Please open Telegram to view this post
VIEW IN TELEGRAM
1😎79👀22🔥18❤9👨💻5 4 3👍1💯1 1
Друзья, в социальных сетях нашли скрин истории поиска студента "Поколения". 😁
Какие еще интересные запросы можно найти в вашем поисковике? Пишите в комментариях!
Ставьте реакцию:
🔥 — если хотя бы один запрос с картинки вам близок
👀 — если это не про вас
#поколениеpython
Какие еще интересные запросы можно найти в вашем поисковике? Пишите в комментариях!
Ставьте реакцию:
🔥 — если хотя бы один запрос с картинки вам близок
👀 — если это не про вас
#поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥121👀47😁15🤣10❤7 2 2👨💻1🗿1 1
Друзья, давайте разберем задачу про то, как Артур с Тимуром загадывали числа. 😉
1️⃣ Логично предположить, что Тимур может быть уверен в произведении цифр суммы загаданных чисел, если считает, что Артур загадал 1. Тогда сам Тимур загадал число 99.
2️⃣ Но будет ли правдиво утверждение Тимура, если Артур загадал какое-то другое число? Оказывается, да!
Запишем произведение чисел в следующем виде:
Отсюда следует, что сумма цифр этого числа равна:
Примеры:
🟢
🟢
🟢
Поэтому единственное число < 100, позволяющее Тимуру быть на 100% уверенным, — это 99.
Также прилагаем программерское решение от нашей подписчицы Екатерины:
Ставьте реакцию:
🔥 — если легко справились с задачей
👀 — если пришлось поломать голову
#разборзадачи #поколениеpython
Запишем произведение чисел в следующем виде:
99*xy = (100 - 1)*xy = xy00 - xy
Отсюда следует, что сумма цифр этого числа равна:
x + (y - 1) + (9 - x) + (10 - y) = 18.Примеры:
99*37 = 3663 (сумма цифр = 18)99*99 = 9801 (сумма цифр = 18)99*2 = 198 (сумма цифр = 18)Поэтому единственное число < 100, позволяющее Тимуру быть на 100% уверенным, — это 99.
Также прилагаем программерское решение от нашей подписчицы Екатерины:
for t in range(1, 100):
flag = True
for a in range(1, 100):
product = sum(map(int, str(t*a)))
if product != 18:
flag = False
break
if flag:
print(t)
Ставьте реакцию:
🔥 — если легко справились с задачей
👀 — если пришлось поломать голову
#разборзадачи #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
1👀38🔥28❤8👍5 4🤯3 3🥰1😁1 1
Друзья, на вопросы студентов "Поколения" отвечает Тимур Гуев — автор курсов и создатель онлайн-школы BeeGeek. 😎
❤️ Не умел самостоятельно думать над задачами
Занимаясь в вузе олимпиадным программированием, я понял, что не решаю сложные задачи сам. Поверчу задачу немного, не получилось — и иду просить идею решения у преподавателя, потому что сам факт решения задачи для меня ценнее, чем процесс. Преподаватель мне первое время помогала, но потом заметила, что я прибегаю при каждой трудности. Она сказала:
Сложность была в том, чтобы заставить себя сидеть над задачей, когда она не получается. Сразу начинался психоз, хотелось все бросить. Но на самом деле это самое ценное: пока сидишь над задачей, ты гуглишь, читаешь, изучаешь разные структуры данных, пытаешься собрать все в цельную картину. Именно в этом процессе ты по-настоящему изучаешь программирование.
Кстати, именно поэтому при прохождении наших курсов мы рекомендуем не прибегать к подсказкам или к вопросам в комментариях, пока вы не убедитесь, что зашли в тупик. И потому же не стоит сразу бросаться к ChatGPT с просьбой объяснить решение.😉
❤️ Сравнивал себя с другими
У того же преподавателя в вузе была такая манера: сталкивать двух участников команды или двух однокурсников в небольшом поединке, чтобы они почувствовали свои силы, поняли свой уровень. Особенно тяжко было, когда мы выезжали на олимпиады: я смотрел на школьников и понимал, что они мощнее меня в тысячи раз, потому что начали заниматься олимпиадным программированием с пятого класса, а я со — второго курса, то есть разрыв колоссальный. И мне было очень тяжело, когда кто-то оказывался сильнее и лучше меня.
Мне понадобилось время, чтобы понять: всегда найдется тот, у которого все будет получаться лучше и быстрее. Но это неважно. Важна только моя траектория. Как говорят психологи, сравнивайте себя с собой вчерашним.
Поэтому когда меня спрашивают, сколько часов в день тратить на изучение программирования, сколько уйдет на то, чтобы пройти курс или стать программистом, я не могу дать ответ. У вас будет свой темп, личный, правильный только для вас.
☝️ ☝️ ☝️ ☝️ Единственный совет, который я могу дать по поводу учебы: заниматься нужно непрерывно, не бросать даже на день-два. В пиковые дни вы решите много задач, в лайтовые — прочитаете статью на Хабре или сделаете какой-то конспект по теме. Но все равно с таким подходом вы узнаёте что-то новое каждый день. Потому что программирование — это не просто плюшки типа зарплаты или удаленки. Это увлекательная профессия, это жизнь. И только если вы это понимаете, у вас будет мотивация учиться и развиваться.
❤️ А с какими трудностями вы сталкивались при изучении программирования? Поделитесь в комментариях!
❤️ Задать свой вопрос Тимуру можно через нашего бота @pygen_ru_bot.
Ставьте реакцию:
🔥 — если сталкивались с теми же трудностями, что и Тимур
👀 — если у вас другие трудности
#ответнавопрос #поколениеpython
❤️ Какие сложности возникали во время твоего обучения и освоения профессии программиста?
Занимаясь в вузе олимпиадным программированием, я понял, что не решаю сложные задачи сам. Поверчу задачу немного, не получилось — и иду просить идею решения у преподавателя, потому что сам факт решения задачи для меня ценнее, чем процесс. Преподаватель мне первое время помогала, но потом заметила, что я прибегаю при каждой трудности. Она сказала:
“Тимур, либо ты думаешь сам, после чего можешь решить любую задачу такого типа, либо справляешься с подсказками, но не сможешь брать такие задачи в будущем”.
Сложность была в том, чтобы заставить себя сидеть над задачей, когда она не получается. Сразу начинался психоз, хотелось все бросить. Но на самом деле это самое ценное: пока сидишь над задачей, ты гуглишь, читаешь, изучаешь разные структуры данных, пытаешься собрать все в цельную картину. Именно в этом процессе ты по-настоящему изучаешь программирование.
Кстати, именно поэтому при прохождении наших курсов мы рекомендуем не прибегать к подсказкам или к вопросам в комментариях, пока вы не убедитесь, что зашли в тупик. И потому же не стоит сразу бросаться к ChatGPT с просьбой объяснить решение.
У того же преподавателя в вузе была такая манера: сталкивать двух участников команды или двух однокурсников в небольшом поединке, чтобы они почувствовали свои силы, поняли свой уровень. Особенно тяжко было, когда мы выезжали на олимпиады: я смотрел на школьников и понимал, что они мощнее меня в тысячи раз, потому что начали заниматься олимпиадным программированием с пятого класса, а я со — второго курса, то есть разрыв колоссальный. И мне было очень тяжело, когда кто-то оказывался сильнее и лучше меня.
Мне понадобилось время, чтобы понять: всегда найдется тот, у которого все будет получаться лучше и быстрее. Но это неважно. Важна только моя траектория. Как говорят психологи, сравнивайте себя с собой вчерашним.
Поэтому когда меня спрашивают, сколько часов в день тратить на изучение программирования, сколько уйдет на то, чтобы пройти курс или стать программистом, я не могу дать ответ. У вас будет свой темп, личный, правильный только для вас.
Ставьте реакцию:
🔥 — если сталкивались с теми же трудностями, что и Тимур
👀 — если у вас другие трудности
#ответнавопрос #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥124❤21 13👀8👍7 3 3🤩2
Друзья, сегодня в рубрике "Слово недели" разбираемся, что такое парсинг. 🔍
🤔 Представьте, что вам нужно быстро собрать данные с большого количества страниц в интернете: например, чтобы сравнить цены на авиабилеты. Можно зайти на каждую вручную и составить сравнительную табличку — или запустить парсер.
🔥 Парсинг — это автоматическое извлечение информации из сайтов или других источников данных. Программист пишет скрипт (то есть парсер), который "ходит" по страницам, находит нужные кусочки текста, картинок или чисел и сохраняет их в удобном виде.
Где применяется парсинг:
🟢 мониторинг цен и скидок
🟢 сбор новостей с разных порталов
🟢 анализ отзывов о товарах
🟢 и многое другое
Python — один из популярных языков для парсинга. У него есть простые и мощные библиотеки, например:
✅ requests — чтобы получить "сырой" HTML-код страницы и взаимодействовать с сайтом через API (в этом посте рассказывали, что это такое)
✅ BeautifulSoup — чтобы разобрать этот HTML-код и вытащить нужные данные
✅ Selenium — чтобы получать нужные данные, имитируя работу пользователя с браузером: нажимать на разные кнопки, скроллить страницы и так далее
☝️ ☝️ ☝️ ☝️ У каждого сайта есть свои правила, и далеко не все разрешают парсить свои данные. Поэтому предварительно проверяйте условия использования и файл robots.txt, который содержит инструкции для поисковых роботов о том, какие части веб-сайта можно, а какие нельзя сканировать и индексировать.
Ставьте реакцию:
🔥 — если писали свои парсеры
❤️ — если знали о парсинге, но не применяли его
👀 — если впервые узнали это слово
#словонедели #поколениеpython
Где применяется парсинг:
Python — один из популярных языков для парсинга. У него есть простые и мощные библиотеки, например:
Ставьте реакцию:
🔥 — если писали свои парсеры
❤️ — если знали о парсинге, но не применяли его
👀 — если впервые узнали это слово
#словонедели #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
77❤133👀72🔥50 7👍5😱1🫡1🆒1 1 1 1
Друзья, сегодня у нас задачка на комбинаторику. 😎
❤️ Сколько существует способов прочитать имя "Гена", следуя по стрелкам?
Ответы и ход своих рассуждений пишите в комментариях, не забывая проскрытый текст.
Ставьте реакцию:
🔥 — если у вас есть знакомый Гена
👀 — если знаете только крокодила Гену
#поколениеpython #задача
Ответы и ход своих рассуждений пишите в комментариях, не забывая про
Ставьте реакцию:
🔥 — если у вас есть знакомый Гена
👀 — если знаете только крокодила Гену
#поколениеpython #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
2👀131🔥35❤14 5 5👨💻1💘1 1
Друзья, а вы знаете, кому мы обязаны появлением интернета в его современном виде? 🤨
В конце 80-х ЦЕРН (там, где гигантский адронный коллайдер) столкнулся с проблемой: ученым по всему миру, которые работали над общими проектами, было крайне трудно обмениваться данными.
💡 Это решил исправить молодой британский программист Тим Бернерс-Ли, объединив два уже существующих подхода:
🔵 гиперссылки
🔵 интернет-протоколы для передачи данных
Так родилась World Wide Web — “Всемирная паутина”. Первый сайт до сих пор доступен и выглядит как музейный экспонат.🌐
🤯 Попутно Тиму пришлось придумать первый веб-браузер, идентификаторы в сети URL, сетевой протокол HTTP и язык разметки HTML (о нем рассказывали в этом посте).
Интересные факты:
🌱 в студенческие годы Тим предпринял попытку хакерской атаки и был отлучен от пользования университетскими компьютерами
🌱 в 2004 году получил рыцарский титул
Ставьте реакцию:
🔥 — если благодарны Бернерсу-Ли за изобретение интернета
👀 — если без интернета было бы лучше
#поколениеpython #япознаюмир
В конце 80-х ЦЕРН (там, где гигантский адронный коллайдер) столкнулся с проблемой: ученым по всему миру, которые работали над общими проектами, было крайне трудно обмениваться данными.
Так родилась World Wide Web — “Всемирная паутина”. Первый сайт до сих пор доступен и выглядит как музейный экспонат.
Интересные факты:
Ставьте реакцию:
🔥 — если благодарны Бернерсу-Ли за изобретение интернета
👀 — если без интернета было бы лучше
#поколениеpython #япознаюмир
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥222👀20❤11 7👍4 3👏2😁2😇2 2 2
Выберите ключевое слово для остановки цикла в Python
Anonymous Quiz
1%
continue
2%
pass
3%
def
89%
break
4%
exit
3 65 11🤗8👾6👍3🔥3 2❤1🥰1🆒1
Друзья, сегодня поговорим о подзапросах в SQL. 😎
При выполнении запроса обращение к таблице происходит лишь единожды, однако в рамках одного запроса данные из таблицы могут извлекаться несколько раз. Для выполнения таких вспомогательных операций извлечения используются подзапросы.
📌 Подзапрос — это запрос, вложенный в другой запрос. Он заключен в круглые скобки и обычно выполняется перед основным запросом. Подзапросы являются обычными запросами, и для них не предусмотрен какой-либо отдельный синтаксис, поэтому для составления подзапросов достаточно уметь составлять обычные запросы.
📎 Предположим, что наша база данных содержит таблицу
поскольку его результатом является ошибка:
Для решения данной задачи мы можем воспользоваться подзапросом, чтобы сперва вычислить среднюю стоимость книг, а затем выполнить сравнение с полученным значением:
Здесь в условии фильтрации значение поля
☝️ ☝️ ☝️ ☝️ Сравнение значения поля
⏰ ⏰ ⏰ ⏰ ⏰ ⏰ ⏰ Подробнее рассказываем о подзапросах в нашем курсе "Базы данных и SQL". Его можно купить на нашем сайте pygen.ru.
Ставьте реакцию:
🔥 — если знаете о подзапросах
👀 — если узнали о них впервые
#sql #подзапросы #поколениеpython
При выполнении запроса обращение к таблице происходит лишь единожды, однако в рамках одного запроса данные из таблицы могут извлекаться несколько раз. Для выполнения таких вспомогательных операций извлечения используются подзапросы.
Books, включающую информацию о названиях книг, их авторах и ценах. Агрегатные функции нельзя использовать для фильтрации записей, поэтому если мы захотим извлечь данные о книгах, чья стоимость превышает среднюю стоимость всех книг, то сделать это с помощью следующего запроса не сможем: SELECT *
FROM Books
WHERE price > AVG(price);
поскольку его результатом является ошибка:
ERROR 1111: Invalid use of group function
Для решения данной задачи мы можем воспользоваться подзапросом, чтобы сперва вычислить среднюю стоимость книг, а затем выполнить сравнение с полученным значением:
SELECT *
FROM Books
WHERE price > (SELECT AVG(price)
FROM Books);
Здесь в условии фильтрации значение поля
price сравнивается с результатом подзапроса. Подзапрос обращается к таблице Books и вычисляет среднее арифметическое всех значений ее поля price. Таблица, получаемая в результате подзапроса, состоит из одной записи и одного поля, то есть содержит единственное значение, с которым и происходит последующее сравнение значения поля price.price с таблицей возможно именно по той причине, что эта таблица содержит лишь одно значение, и СУБД использует это значение для выполнения операции сравнения. Если бы таблица содержала более одного значения, такая операция была бы невозможна.Ставьте реакцию:
🔥 — если знаете о подзапросах
👀 — если узнали о них впервые
#sql #подзапросы #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥60👀38❤15🙊4 3 2👍1🎄1 1
Друзья, уже совсем скоро произойдет ежегодное повышение цены на платные курсы "Поколения". 🐍
🚨 С 10 сентября 2025 года стоимость всех платных курсов составит 7900 рублей.
💵 Вы можете купить курсы до повышения цены со скидкой 2000 рублей. С промокодом УСПЕЙКУПИТЬ стоимость любого платного курса составит 4900 рублей при покупке через наш официальный сайт.
☝️ ☝️ ☝️ ☝️ Промокод больше недоступен: все активации использованы.
☀️ С другими скидками и акциями можно ознакомиться по ссылке.
Ставьте реакцию:
🔥 — если уже купили все платные курсы
❤️ — если размышляете над покупкой
#информация #поколениеpython #важно #повышениецен
Ставьте реакцию:
🔥 — если уже купили все платные курсы
❤️ — если размышляете над покупкой
#информация #поколениеpython #важно #повышениецен
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤74🔥35😭20 5👌3👨💻3 3💔2 2🗿1
Друзья, сегодня поговорим о представлениях словарей.
❤️ В Python словари (тип
❤️
❤️
❤️
Данные методы возвращают так называемые представления словарей, которые являются динамическими объектами. Это означает, что при изменении словаря представления словаря будут отражать эти изменения.
До версии Python 3.0 методы словарей
Для решения данной проблемы сначала было предложено ввести дополнительные методы словарей
Позднее, в PEP 3106, было предложено изменить методы
Представления словарей имеют длину, их можно перебирать в цикле и использовать для проверки элементов на вхождение. Кроме того, они поддерживают некоторые методы множеств и соответствующие им операторы.
❗️ Объекты-представления не поддерживают индексацию. При попытке обратиться к элементу представления словаря по индексу возникает ошибка
Однако на основе представлений словаря можно получить другой итерируемый объект с помощью соответствующих функций. Например, передав представление в функцию
Представления словарей относятся к классам
Ставьте реакцию:
🔥 — если знали о представлениях словарей
👀 — если узнали о них впервые
#python #полезныйматериал #словари #dict #представлениясловарей
dict) имеют три специальных метода:keys() — для получения всех ключей values() — для получения всех значений ключейitems() — для получения всех пар ключ-значение Данные методы возвращают так называемые представления словарей, которые являются динамическими объектами. Это означает, что при изменении словаря представления словаря будут отражать эти изменения.
До версии Python 3.0 методы словарей
keys(), values() и items() возвращали обычные списки. Это приводило к потреблению большого количества памяти, так как требовало копирования в список содержимого словаря.Для решения данной проблемы сначала было предложено ввести дополнительные методы словарей
iterkeys(), itervalues() и iteritems(), возвращающие более эффективные с точки зрения потребления памяти итераторы. Позднее, в PEP 3106, было предложено изменить методы
keys(), values() и items(), чтобы они возвращали объекты-представления, а методы iterkeys(), itervalues() и iteritems() удалить из Python. В отличие от итераторов, объекты-представления можно использовать в коде многократно. Представления словарей имеют длину, их можно перебирать в цикле и использовать для проверки элементов на вхождение. Кроме того, они поддерживают некоторые методы множеств и соответствующие им операторы.
TypeError. Однако на основе представлений словаря можно получить другой итерируемый объект с помощью соответствующих функций. Например, передав представление в функцию
list(), мы получим индексируемый список.Представления словарей относятся к классам
dict_keys, dict_values и dict_items, интересной особенностью которых является то, что их нельзя использовать в программе самостоятельно. При попытке создать собственный экземпляр этих классов мы получим ошибку TypeError: cannot create <class name> instances.Ставьте реакцию:
🔥 — если знали о представлениях словарей
👀 — если узнали о них впервые
#python #полезныйматериал #словари #dict #представлениясловарей
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👀99🔥65❤17 6 4✍1 1
Друзья, люди приходят в ИТ-сферу по очень разным причинам. И нам стало интересно, какие из них преобладают среди наших студентов. 😉
Проголосуйте за один из вариантов в опросе ниже. А если он вам не подходит, напишите свою версию в комментариях к этому посту.👩❤️👨
Ставьте реакцию:
🔥 — если целенаправленно шли к работе в ИТ
❤️ — если столкнулись с этой сферой случайно
#поколениеpython
Проголосуйте за один из вариантов в опросе ниже. А если он вам не подходит, напишите свою версию в комментариях к этому посту.
Ставьте реакцию:
🔥 — если целенаправленно шли к работе в ИТ
❤️ — если столкнулись с этой сферой случайно
#поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥179❤116⚡6 3 3 2