Добрый вечер, надеюсь никто еще в 10 часов не спит🙃 Пока не забыл, оставляю краткий обзор по недавнему материалу по Docker. Надеюсь кому-то будет полезно краткое описание🙂P.S. Первый пост(с картинкой по установке) выкатил после 5 пройденных и разобранных видосов.
Что там было:
0) Описание сути докера
1) Подробная установка Docker на комп.
2-3-4) Создание образов, контейнеров. Так же их удаление, пересобирание. В общей сложности почти час времени(не учебного, а которое по минутам). . Это было хорошо, и легко, но дальше стало пропадать время😅😅😅
5) Углубление в команды докера: Показываются ньюансы, которые считаются нужными. Ну хз. Для моего текущих целий - будто бы много лишней инфы. Да полезно, но сейчас я врядли буду проверять все контейнеры, искать их по статусам запуска, как они завершились, приостановлены ли, перезапускались ли и т.д. и т.п. Еще кучи флагов, которые даже если запомню, то через время забуду. потому что скорее всего не так часто на данный момент буду пользоваться докером.
6) Про работу с портами: написали приложение с одной начальной пустой страницей, показали как его открыть в браузере, связать с докером. И рассмотрены различные случаи использования, с постепенным изучением. Надеюсь все верно понял и описал по памяти. Если что поправьте.
7) Работа с томами: (volumes). Есть три способа связать содержимое контейнера докера с тем, откуда ты берешь данные для него. Каталог докера к каталогу hosta(твоей системы) или же связать папку внутри контейнера docker-а с томом, который мы создадим командой для хранения данных. 3 вариант аналогичен второму, просто названия даем не мы, а создаются автоматически.
8) Создание микросервисных проектов: Т.е. создаются разные контейнеры(например: Django, postgress, react js, adminer и т.д.), которые будут взаимодействовать между собой в рамках внутренней среды внутри докера. Показан простой пример совместной работы на flask + postgresql + adminer
9) Docker compose: Крч, чтобы не писать все команды для создания образов и их соединения для совместной работы, пишут всё в одном файле - compose.yml. В нем описываются этапы построения мультисервисного построения. В материале подробно разбирается что да как, с теорией вопросов нет. Осталось применять на практике.
10) Проект Django с Postgresql и Nginx: Думаю название говорит само за себя. Можно просмотреть для понимания работы докера и составления файла compose.yml. Повторять за автором нет смысла, т.к. там уже готовый проект на Django, с данными таблицами в json, готовыми настройками для nginx, и т.д. и т.п.
Итог по материалу:
По теории прокачался, стало понятно что это, как работает. Все хорошо. Нооо, нужна практика)) Я наверное немного другого ожидал и хотел от этого плейлиста. Ну ничего, потом будет откуда взять инфу если что-то забуду или не пойму. Надо будет позже самостоятельно обернуть несколько своих проектов в докер, составить этот compose.yml и закускать. Но это уже совсем другая история😶😶😶
Что там было:
0) Описание сути докера
1) Подробная установка Docker на комп.
2-3-4) Создание образов, контейнеров. Так же их удаление, пересобирание. В общей сложности почти час времени(не учебного, а которое по минутам). . Это было хорошо, и легко, но дальше стало пропадать время😅😅😅
5) Углубление в команды докера: Показываются ньюансы, которые считаются нужными. Ну хз. Для моего текущих целий - будто бы много лишней инфы. Да полезно, но сейчас я врядли буду проверять все контейнеры, искать их по статусам запуска, как они завершились, приостановлены ли, перезапускались ли и т.д. и т.п. Еще кучи флагов, которые даже если запомню, то через время забуду. потому что скорее всего не так часто на данный момент буду пользоваться докером.
6) Про работу с портами: написали приложение с одной начальной пустой страницей, показали как его открыть в браузере, связать с докером. И рассмотрены различные случаи использования, с постепенным изучением. Надеюсь все верно понял и описал по памяти. Если что поправьте.
7) Работа с томами: (volumes). Есть три способа связать содержимое контейнера докера с тем, откуда ты берешь данные для него. Каталог докера к каталогу hosta(твоей системы) или же связать папку внутри контейнера docker-а с томом, который мы создадим командой для хранения данных. 3 вариант аналогичен второму, просто названия даем не мы, а создаются автоматически.
8) Создание микросервисных проектов: Т.е. создаются разные контейнеры(например: Django, postgress, react js, adminer и т.д.), которые будут взаимодействовать между собой в рамках внутренней среды внутри докера. Показан простой пример совместной работы на flask + postgresql + adminer
9) Docker compose: Крч, чтобы не писать все команды для создания образов и их соединения для совместной работы, пишут всё в одном файле - compose.yml. В нем описываются этапы построения мультисервисного построения. В материале подробно разбирается что да как, с теорией вопросов нет. Осталось применять на практике.
10) Проект Django с Postgresql и Nginx: Думаю название говорит само за себя. Можно просмотреть для понимания работы докера и составления файла compose.yml. Повторять за автором нет смысла, т.к. там уже готовый проект на Django, с данными таблицами в json, готовыми настройками для nginx, и т.д. и т.п.
Итог по материалу:
По теории прокачался, стало понятно что это, как работает. Все хорошо. Нооо, нужна практика)) Я наверное немного другого ожидал и хотел от этого плейлиста. Ну ничего, потом будет откуда взять инфу если что-то забуду или не пойму. Надо будет позже самостоятельно обернуть несколько своих проектов в докер, составить этот compose.yml и закускать. Но это уже совсем другая история😶😶😶
YouTube
Docker. Что это такое? | Docker для начинающих
Практический курс по Django + Docker: https://stepik.org/a/183363
Телеграм-канал Django: https://t.me/django_selfedu
Что такое docker, зачем он нужен, принцип работы.
Телеграм-канал Django: https://t.me/django_selfedu
Что такое docker, зачем он нужен, принцип работы.
👍4🐳2
Потихоньку готовлюсь к переустановке винды. А тут такое, пришла беда откуда не ждали. Это со страницы на скачивание Pycharm. В начале этого года было ок, но уже тогда нельзя было плагины скачивать на нее.
VPN-ом ранее не пользовался, не считая "zapret@" для ютуб, но видимо придется. Теперь не понятно где и от кого теперь можно подлянку ожидать. Хотя не, парочкой пользовался, но они были на лимит по Гб. И плюс через пару дней переставали работать(вечная загрузка сервера), прося приобрести подписку. Хитрые жуки...
Поэтому вопрос: Может тут есть кто пользуется и знает кто какой хороший сервис? Посоветуйте🙃 Желательно, конечно, бесплатный))😁Но мне кажется таких не существует.
P.S.
Начал проходить "Добрый, добрый Python".
VPN-ом ранее не пользовался, не считая "zapret@" для ютуб, но видимо придется. Теперь не понятно где и от кого теперь можно подлянку ожидать. Хотя не, парочкой пользовался, но они были на лимит по Гб. И плюс через пару дней переставали работать(вечная загрузка сервера), прося приобрести подписку. Хитрые жуки...
Поэтому вопрос: Может тут есть кто пользуется и знает кто какой хороший сервис? Посоветуйте🙃 Желательно, конечно, бесплатный))😁Но мне кажется таких не существует.
P.S.
Начал проходить "Добрый, добрый Python".
🤔3🤩1
Мой текущий Road Map Python-разработчика. Версия betta:0.01😃 Обновлено 23.09.26.
Здесь будет то что я прохожу/планирую проходить, когда это начал/закончил и какие материалы для этого изучал. На данный момент здесь не так много, будет расширяться и обновляться по мере завершения этапов. Возможно объединю с первой версией, но пока что оставлю это так.
Собственно план:
🔸) Python - База:
Добрый, добрый Python с Сергеем Балакиревым — (29.09.25 — 08.10.2025)
🔸) Python ООП:
Добрый, добрый Python ООП - обучающий курс от Сергея Балакирева — (17.10.25 — 18.12.25) (по факту 30-40 дней без пропусков)
ООП Python: Часть 1 — (25.02.26 — 26.02.26)
ООП Python: Часть 2 — (27.02.26 — 1.03.26)
🔸) Django
Джанго Балакирева (23.09.26 - ..**)
🔸)Wait for the next updates
Здесь будет то что я прохожу/планирую проходить, когда это начал/закончил и какие материалы для этого изучал. На данный момент здесь не так много, будет расширяться и обновляться по мере завершения этапов. Возможно объединю с первой версией, но пока что оставлю это так.
Собственно план:
🔸) Python - База:
Добрый, добрый Python с Сергеем Балакиревым — (29.09.25 — 08.10.2025)
🔸) Python ООП:
Добрый, добрый Python ООП - обучающий курс от Сергея Балакирева — (17.10.25 — 18.12.25) (по факту 30-40 дней без пропусков)
ООП Python: Часть 1 — (25.02.26 — 26.02.26)
ООП Python: Часть 2 — (27.02.26 — 1.03.26)
🔸) Django
Джанго Балакирева (23.09.26 - ..**)
🔸)
👍4🙏1
Исходя из вчерашней теории, такой вот вопрос был. Вроде бы база, а понимать надо.
P.s. процент верных решений - 19%🙃
P.S. ВЕРНЫЙ ОТВЕТ, не смотрите раньше времени)
Правильные варианты тут 1 и 3. Если переменной нет, то ее надо создать, что логично. Но переменная в питоне не хранит себе значение напрямую, она является ссылкой на объект, к которому она присваивается. А если мы меняем например значение переменной, то мы просто начинаем ссылаться на другой объект. Значит, исходя из этих удтверждений - верный ответ - 3 тоже. А вообще, все в питоне является объектами,(точнее ссылками на объекты) об этом говориться должно на первом вводном занятии)
P.s. процент верных решений - 19%🙃
P.S. ВЕРНЫЙ ОТВЕТ, не смотрите раньше времени)
👍4
Начал курс Добрый, добрый Python с Сергеем Балакиревым
В первом видео автор говорит что материал рассчитан на 4 месяца прохождения. Марафон, а не спринт. И что есть лимит усвоения информации за день, но у каждого он разный. Я с ним согласен, но надеюсь быстрее чем за 4 месяца управлюсь😁 Начал проходить, чтобы вспомнить возможно забытые пробелы в теории и некоторые ньюансы, т.к. этот курс охватывает многое. Очень хорошее объяснение в видео, есть так же текстовый краткий конспект. Но блин, кажется не так много прошел, а день пролетел, быстро🙈
Хотя и практики тут хватает. Если смотреть по задачкам на написание кода, то больше чем в любом курсе, который я видел или проходил, включая Поколения Пайтон, который я думал самый большой, но нет😁однако там больше тестовых задач, чем здесь. В Инди-курсе, только больше практических задач, но он затрагивает меньше тем. И например часть про функции платная. Ну это так, вводные чем хорош этот курс.
Если кто его еще не проходил - можете начать вместе со со мной)🙃Я его раньше начинал проходить, но не помню почему не закончил. Дело думаю в перерывах в обучении. И вот сейчас прохожу практику, про которую некоторые люди говорят, что душные задания или не понятные. Но хз, пока таки не встречал. Но может они просто сложнее чем в других курсах, а не просто отработать метод, повторив синтаксис. Смотрю свои решения 3-2-1 год назад и вижу, что 1 в 1 решаю в 95% случаях😂😂😂Это как понимать? даже переменные те же)))У меня тут два варианта, один хороший, и один плохой😑
Тут увидите что я за вчера успел пройти и чем занимался:
🔘) Почти 4 часа видео( 227 минут, если быть точнее), да, я посчитал, мне не лень😄
🔘) Решеные все практические задачи после этих лекций.
🔘) Пройденные Главы:
1) Первое знакомство: Темы: Установка Python, Pycharm. Если забыли - пригодится🙃
2) Мои первые шаги в Python: Темы: Переменные, оператор присваивания, функции type и id; Числа и операции над ними; Математические функции и работа с модулем math; Функции print и input; Логический тип Bool;
3) Постижение строк и списков: Темы: Введение в строки. Базовые операции над строками; Знакомство с индексами и срезами строк; Основные методы строk; Спецсимволы, экранирование символов, row-строки; Форматирование строк: метод format и F-строки;
4) Условные операторы: Темы: Условный оператор if. Конструкция if-else; Вложенные условия и множественный выбор. Конструкция if-elif-else; Тернарный условный оператор. Вложенное тернарное условие;
А для себя еще один лайфак сделал😶 Пока я перечисляю темы для поста - повторяю их в кратком конспекте на сайте. Кривая забывания Эббингауза в деле, все дела. Из всего перечисленного могу сказать что понимаю как это работает, так же применяю.
А теперь спросите себя, помните ли вы все эти темы, перечисленные выше?🧐Ниже будет список, основных моментов, которые были в этой теории. Можете себя проверить всё ли вы знаете как работает😈😈😈
Поехали:
Переменная, оператор присваивания, type(), числовые операции (+, -, *, /, **, //, %), функции модуля (частые) math:[ abs(), max(), min(), pow(), round(), ceil(), floor(), trunc(), log(), sqrt(), pi, e, sin(), cos() ]; print(*args, sep=' ', end='\n'), input(); логический тип bool(), and, or, not и их приоритеты.
строки: in, len(), сложение строк, срезы строк s[start, end, step], основные методы строк: upper(), lower(), count(), find(), index(), replace(), isalpha(), isdigit(), isalnum(), rjust(), ljust(), strip(), split(), join(), swapcase(), capitalize(), title(); экранирование строк через '\', сырые(r') строки, \n, \t, методы format(), f-строки.
Условный оператор: if, else; if-elif-else, вложенные условия, тернарный оператор (value if <условие> else another_value), вложенный тернарный
P.S.
Вышло многа буков. Настолько много, что еще кое-какая часть не влезет в этот пост)😅
В первом видео автор говорит что материал рассчитан на 4 месяца прохождения. Марафон, а не спринт. И что есть лимит усвоения информации за день, но у каждого он разный. Я с ним согласен, но надеюсь быстрее чем за 4 месяца управлюсь😁 Начал проходить, чтобы вспомнить возможно забытые пробелы в теории и некоторые ньюансы, т.к. этот курс охватывает многое. Очень хорошее объяснение в видео, есть так же текстовый краткий конспект. Но блин, кажется не так много прошел, а день пролетел, быстро🙈
Хотя и практики тут хватает. Если смотреть по задачкам на написание кода, то больше чем в любом курсе, который я видел или проходил, включая Поколения Пайтон, который я думал самый большой, но нет😁однако там больше тестовых задач, чем здесь. В Инди-курсе, только больше практических задач, но он затрагивает меньше тем. И например часть про функции платная. Ну это так, вводные чем хорош этот курс.
Если кто его еще не проходил - можете начать вместе со со мной)🙃Я его раньше начинал проходить, но не помню почему не закончил. Дело думаю в перерывах в обучении. И вот сейчас прохожу практику, про которую некоторые люди говорят, что душные задания или не понятные. Но хз, пока таки не встречал. Но может они просто сложнее чем в других курсах, а не просто отработать метод, повторив синтаксис. Смотрю свои решения 3-2-1 год назад и вижу, что 1 в 1 решаю в 95% случаях😂😂😂Это как понимать? даже переменные те же)))У меня тут два варианта, один хороший, и один плохой😑
Тут увидите что я за вчера успел пройти и чем занимался:
🔘) Почти 4 часа видео( 227 минут, если быть точнее), да, я посчитал, мне не лень😄
🔘) Решеные все практические задачи после этих лекций.
🔘) Пройденные Главы:
1) Первое знакомство: Темы: Установка Python, Pycharm. Если забыли - пригодится🙃
2) Мои первые шаги в Python: Темы: Переменные, оператор присваивания, функции type и id; Числа и операции над ними; Математические функции и работа с модулем math; Функции print и input; Логический тип Bool;
3) Постижение строк и списков: Темы: Введение в строки. Базовые операции над строками; Знакомство с индексами и срезами строк; Основные методы строk; Спецсимволы, экранирование символов, row-строки; Форматирование строк: метод format и F-строки;
4) Условные операторы: Темы: Условный оператор if. Конструкция if-else; Вложенные условия и множественный выбор. Конструкция if-elif-else; Тернарный условный оператор. Вложенное тернарное условие;
А для себя еще один лайфак сделал😶 Пока я перечисляю темы для поста - повторяю их в кратком конспекте на сайте. Кривая забывания Эббингауза в деле, все дела. Из всего перечисленного могу сказать что понимаю как это работает, так же применяю.
А теперь спросите себя, помните ли вы все эти темы, перечисленные выше?🧐Ниже будет список, основных моментов, которые были в этой теории. Можете себя проверить всё ли вы знаете как работает😈😈😈
Переменная, оператор присваивания, type(), числовые операции (+, -, *, /, **, //, %), функции модуля (частые) math:[ abs(), max(), min(), pow(), round(), ceil(), floor(), trunc(), log(), sqrt(), pi, e, sin(), cos() ]; print(*args, sep=' ', end='\n'), input(); логический тип bool(), and, or, not и их приоритеты.
строки: in, len(), сложение строк, срезы строк s[start, end, step], основные методы строк: upper(), lower(), count(), find(), index(), replace(), isalpha(), isdigit(), isalnum(), rjust(), ljust(), strip(), split(), join(), swapcase(), capitalize(), title(); экранирование строк через '\', сырые(r') строки, \n, \t, методы format(), f-строки.
Условный оператор: if, else; if-elif-else, вложенные условия, тернарный оператор (value if <условие> else another_value), вложенный тернарный
P.S.
Вышло многа буков. Настолько много, что еще кое-какая часть не влезет в этот пост)😅
❤3🔥3
Немного не хватило длины предыдущего поста, поэтому допишу здесь.🙂
А вот некоторые моменты, которые из этого я дополнительно для себя узнал, ну или вспомнил. Хотя тема начальная и не такая сложная. Но как говорится: "век живи, век учись, но не перебарщивай с этим"=)
Собственно вот:
Остаток от деления числа "а" на число "b", если один или оба из них отрицательные. Редко встречается, но все же знать полезно. Как ведет себя round() при граничных округлениях. Не совсем так как я ожидал)) Так же что у split() есть второй необязательный параметр maxsplit. Ииии, вишенка на торте😂 - вечно путаюсь с rjust(), ljust(). Думаю в дальнейшем эти или другие интересные ньюансы буду запускать как небольшие викторины с одним правильным ответом.
А вот некоторые моменты, которые из этого я дополнительно для себя узнал, ну или вспомнил. Хотя тема начальная и не такая сложная. Но как говорится: "век живи, век учись, но не перебарщивай с этим"=)
Собственно вот:
Остаток от деления числа "а" на число "b", если один или оба из них отрицательные. Редко встречается, но все же знать полезно. Как ведет себя round() при граничных округлениях. Не совсем так как я ожидал)) Так же что у split() есть второй необязательный параметр maxsplit. Ииии, вишенка на торте😂 - вечно путаюсь с rjust(), ljust(). Думаю в дальнейшем эти или другие интересные ньюансы буду запускать как небольшие викторины с одним правильным ответом.
🤗2
Интересная задачка дня
Ну и напоследок - полуночное шевеление мозгами) За вчера мне вот эта показалась интересной. Ссылка на задачу. К этому моменту в теории пройдено только переменные, строки и методы строк. Никаких условных операторов, списков или чего-то еще другого. Как бы вы решили без этого? Если пишете решение, то просьба делать это в "закрытом" виде, дабы не давать спойлеров другим. Спасибо)
Тесты можно найти по ссылке: https://github.com/selfedu-rus/test-python-base/blob/main/3/3.4.4/tests
Ну и напоследок - полуночное шевеление мозгами) За вчера мне вот эта показалась интересной. Ссылка на задачу. К этому моменту в теории пройдено только переменные, строки и методы строк. Никаких условных операторов, списков или чего-то еще другого. Как бы вы решили без этого? Если пишете решение, то просьба делать это в "закрытом" виде, дабы не давать спойлеров другим. Спасибо)
Тесты можно найти по ссылке: https://github.com/selfedu-rus/test-python-base/blob/main/3/3.4.4/tests
🤯3❤1
🤔3
Всем доброго времени курса! Продолжаю проходить курс Балакирева. Ниже поделюсь результатами за вчера. А у вас как день прошел вчера? Пишите в комментариях)
Пройденное за вчера:
🔘) Около 3 часа видео( 181 минута, если быть точнее), да, я посчитал, мне не лень😄
🔘) Решено половина задач по этим темам.
🔘) Пройденные Главы:
1) Списки: Темы: Списки - операторы и функции работы с ними; Срезы списков и сравнение списков; Основные методы списков; Вложенные списки, многомерные списки
2) Циклы, генераторы списков: Темы: Оператор цикла while; Операторы циклов break, continue и else; Оператор цикла for. Функция range(); Примеры работы оператора цикла for. Функция enumerate(); Итератор и итерируемые объекты. Функции iter() и next(); Вложенные циклы. Примеры задач с вложенными циклами; Генераторы списков (List comprehensions); Вложенные генераторы списков
Так же ниже будет список, основных моментов, которые были в этой теории. Можете себя проверить всё ли вы знаете как работает😈😈😈
Поехали:
Сложение списков, функции со списками len(), max(), min(), sum(), sorted(), sort; операторы: +, *, in, del; срезы списков, копирование: lst[::], list(lst), lst.copy(); id(), основные методы списков: append(), extend(), pop(), insert(), remove(), clear(), count(), index(), reverse(), многомерные списки или по-другому матрицы.
Цикл while, цикл for, else в конце них; операторы: break, continue, else; функция range(start, stop, step); enumerate(); Итератор vs итерируемый объект, next(), item(), вложенные циклы, генератор: [<значение> for <переменная> in <итерируемый объект> if <условие>], вложенный генератор списков [ [(i, j) for j in range(n)] for i in range(m)], получается матрица m на n.
Важные моменты из этого материала:
1) У циклов while, for может быть в конце стоять else, такой же как в условных операторах. Об этом мало где говорится, но такое есть, и это условие выполнится, если цикл завершит свою работу в штатном режиме, т.е. без оператора break.
2) Было рассказано про итератор и итерируемый объект. Это очень частый вопрос на собеседованиях. Лучше это выучите это один раз и запомните.
3) Списки - это изменяемые объекты - будьте осторожны при работе с ним. Если не правильно скопировать его и присвоить другой переменной, то при изменение у вас будут меняться сразу два списка, а не один.
4) Так же большинство методов списка аля sort(), append(), remove() и т.д меняют список на месте и не надо его переписаивать заного, т.к. эти методы(функции) возвращают None, т.е. вы просто потеряете переменную со списком.
5) Мб похоже на 4 пункт, но в print() сразу у вас не получится изменить список и вывести ожидаемый результат типо print([1, 2, 3].append(4)). Ответите мне почему?)
P.S.(не придумал название пункта🙃)
А сейчас я собственно на середине 5 главы. Времени на решение задач уходит уже поболее. Они тут не на тяп ляп составлены. Приходится чаще думать, чем сразу писать код, особенно, если решать только с пройденным материалом. Этим мне этот курс и нравится)
Пройденное за вчера:
🔘) Около 3 часа видео( 181 минута, если быть точнее), да, я посчитал, мне не лень😄
🔘) Решено половина задач по этим темам.
🔘) Пройденные Главы:
1) Списки: Темы: Списки - операторы и функции работы с ними; Срезы списков и сравнение списков; Основные методы списков; Вложенные списки, многомерные списки
2) Циклы, генераторы списков: Темы: Оператор цикла while; Операторы циклов break, continue и else; Оператор цикла for. Функция range(); Примеры работы оператора цикла for. Функция enumerate(); Итератор и итерируемые объекты. Функции iter() и next(); Вложенные циклы. Примеры задач с вложенными циклами; Генераторы списков (List comprehensions); Вложенные генераторы списков
Так же ниже будет список, основных моментов, которые были в этой теории. Можете себя проверить всё ли вы знаете как работает😈😈😈
Сложение списков, функции со списками len(), max(), min(), sum(), sorted(), sort; операторы: +, *, in, del; срезы списков, копирование: lst[::], list(lst), lst.copy(); id(), основные методы списков: append(), extend(), pop(), insert(), remove(), clear(), count(), index(), reverse(), многомерные списки или по-другому матрицы.
Цикл while, цикл for, else в конце них; операторы: break, continue, else; функция range(start, stop, step); enumerate(); Итератор vs итерируемый объект, next(), item(), вложенные циклы, генератор: [<значение> for <переменная> in <итерируемый объект> if <условие>], вложенный генератор списков [ [(i, j) for j in range(n)] for i in range(m)], получается матрица m на n.
Важные моменты из этого материала:
1) У циклов while, for может быть в конце стоять else, такой же как в условных операторах. Об этом мало где говорится, но такое есть, и это условие выполнится, если цикл завершит свою работу в штатном режиме, т.е. без оператора break.
2) Было рассказано про итератор и итерируемый объект. Это очень частый вопрос на собеседованиях. Лучше это выучите это один раз и запомните.
3) Списки - это изменяемые объекты - будьте осторожны при работе с ним. Если не правильно скопировать его и присвоить другой переменной, то при изменение у вас будут меняться сразу два списка, а не один.
4) Так же большинство методов списка аля sort(), append(), remove() и т.д меняют список на месте и не надо его переписаивать заного, т.к. эти методы(функции) возвращают None, т.е. вы просто потеряете переменную со списком.
5) Мб похоже на 4 пункт, но в print() сразу у вас не получится изменить список и вывести ожидаемый результат типо print([1, 2, 3].append(4)). Ответите мне почему?)
P.S.(не придумал название пункта🙃)
А сейчас я собственно на середине 5 главы. Времени на решение задач уходит уже поболее. Они тут не на тяп ляп составлены. Приходится чаще думать, чем сразу писать код, особенно, если решать только с пройденным материалом. Этим мне этот курс и нравится)
👏4😱1
Интересная задачка дня
Вот на ней почему-то долго засел. Есть еще и более интересные за сегодня, в другие дни выложу или нет, от вас всё зависит.
ссылка на задачу, ссылка на тесты к ней, если без них не решается.
А вообще на этом курсе много таких на подумать. Кто там хотел алгоритмы?) Сегодня прописал два варианта сортировок, которые я временно скипнул на другом курсе...Но от судьбы не уйдешь)
P.S.
Поставьте реакции или напишите коммент под этим постом. А то я не понимаю, надо оно вам или не надо. Практически не вижу тут никакой обратной связи. Грусть(
Вот на ней почему-то долго засел. Есть еще и более интересные за сегодня, в другие дни выложу или нет, от вас всё зависит.
ссылка на задачу, ссылка на тесты к ней, если без них не решается.
А вообще на этом курсе много таких на подумать. Кто там хотел алгоритмы?) Сегодня прописал два варианта сортировок, которые я временно скипнул на другом курсе...Но от судьбы не уйдешь)
P.S.
Поставьте реакции или напишите коммент под этим постом. А то я не понимаю, надо оно вам или не надо. Практически не вижу тут никакой обратной связи. Грусть(
🤯2❤🔥1😱1
✅Викторина. Проверка знаний.
Что выведет этот код?
string ='py' res = string.rjust(6, 0) print(res) P.S. (я это до сих пор часто путаю))
Что выведет этот код?
string ='py' res = string.rjust(6, 0) print(res) P.S. (я это до сих пор часто путаю))
Anonymous Quiz
30%
0000py
47%
py0000
7%
00py00
16%
ошибку
🤯2
Доброе времени суток! Занимаемся дальше.
Сделанное за вчера:
🔘) Около 1.5 часа видеолекций( 95 минут, если быть точнее), все еще не лень считать)😄
🔘) Дорешены задачи по спискам и новые в текущей главе - кортежи, словари, множества.
🔘) Пройденные Главы:
1) Словари, кортежи и множества: Темы: Введение в словари (dict). Базовые операции над словарями; Методы словаря, перебор элементов словаря в цикле; Кортежи (tuple) и их методы; Множества (set) и их методы; Операции над множествами, сравнение множеств; Генераторы множеств и генераторы словарей; Моржёвый операторация присваивания
Так же ниже будет список, основных моментов, которые были в этой теории. Можете себя проверить всё ли вы знаете как работает😈😈😈
Поехали:
Словари: {ключ1: значение1, ключ2: значение2}, создать словарь: d = {}, d =dict(), получение значения d[key] = value; основные методы словарей: fromkeys(), clear(), get(), setdefault(), pop(), popitem(), d.keys(), d.values(), d.items(), d.update();
Кортежи: - даже не знаю что написать, оч мало было. методы: index(), count() (плюс в чат, если ты это читаешь, проверим сколько таких)😑
Множества: создать пустое: set(), методы: add(), remove(), discard(), update(), pop(), clear(), операции со множествами: пересечение - &, объединение - |, setA.intersection_update(setB), setA.union(setB), вычитание - setA - setB, симметричная разность - ^; сравнение множеств: >, >=, <, <=, ==, !=,
Генераторы: например : множество a = {x 2 for x in range(1, 5)}, словарь a = {x: x 2 for x in range(1, 5)},
Важные моменты из этого материала:
1) Словари в ключах могут содержать только неизменяемые типы данных. Причем элемента ключа должны быть так же неизменяемы, иначе словите ошибку "unhashable type: 'list'"
2) Различие методов при удалении элемента словаря: d.remove(), d.discard(). В 1 случае вызовет ошибку, если нет ключа в словаре, во втором - нет
3) Кортежи - это неизменяемый тип данных. Однако изменяемые элементы его мы можем поменять🤓 Т.к. всё в питоне на ссылках на объекты завязано. Значит ссылку мы не меняем, а объект, на который ссылается эта ссылка можем сделать другим. И ничего не нарушим, кортеж остается тем же. т.е. его элементы будут ссылаться на изначальные объекты.
4) При копирование кортежа срезом по типу t[::] не будет получен новый кортеж, а просто будет еще одна переменная с сылкой на изначальный кортеж, который мы хотели копировать срезом.(со списками, например мы получаем новый объект)
5) Элементами множества могут быть только неизменяемые типы данных! При попытке запихнуть туда например список, получим ошибку, как в 1 пункте.
6) Генераторы. Не существует генератора кортежей, есть просто генератор, из которого мы можем получит кортеж при помощи встроенной функии tuple().
7) Морж. Самый "ленивая" операция присваивания. Имеет наименьше приоритет,т.е. срабатывает самой последней. И дабы избежать ошибок, всегда лучше оборачивать в скобки выражения типо (n = int(input())), или какие-то другие. Сколько раз я себя на этом ловил...теперь всегда оборачиваю в скобки его. Плюс так же лишний раз его лучше стараться не использовать, чтобы не получить неожидаемой работы программы. И такое может быть🙃
Итоги дня и выводы:
Сейчас закончил главу 6, про словари, множества, кортежи. На самом деле она составлена слабее, по сравнению с другими. Можно было б разделить на три и дописать побольше. Многие моменты не рассказаны. Пробежались вскользь. На каждый тип данных по 1 видосу, ну и дальше еще немного практики с их методами. Такими темпами, если проходить по 1 главе в день, то скоро закончу и перейду к ООП.
А еще впервые за последнее время хочется больше заниматься, т.к. попадаются такие задачи и получаешь кайф после их решения. Плюс пока еще могу много времени уделять обучению, надо это делать. Вдруг потом такого момента может не быть.☹️
Сделанное за вчера:
🔘) Около 1.5 часа видеолекций( 95 минут, если быть точнее), все еще не лень считать)😄
🔘) Дорешены задачи по спискам и новые в текущей главе - кортежи, словари, множества.
🔘) Пройденные Главы:
1) Словари, кортежи и множества: Темы: Введение в словари (dict). Базовые операции над словарями; Методы словаря, перебор элементов словаря в цикле; Кортежи (tuple) и их методы; Множества (set) и их методы; Операции над множествами, сравнение множеств; Генераторы множеств и генераторы словарей; Моржёвый операторация присваивания
Так же ниже будет список, основных моментов, которые были в этой теории. Можете себя проверить всё ли вы знаете как работает😈😈😈
Словари: {ключ1: значение1, ключ2: значение2}, создать словарь: d = {}, d =dict(), получение значения d[key] = value; основные методы словарей: fromkeys(), clear(), get(), setdefault(), pop(), popitem(), d.keys(), d.values(), d.items(), d.update();
Кортежи: - даже не знаю что написать, оч мало было. методы: index(), count() (плюс в чат, если ты это читаешь, проверим сколько таких)😑
Множества: создать пустое: set(), методы: add(), remove(), discard(), update(), pop(), clear(), операции со множествами: пересечение - &, объединение - |, setA.intersection_update(setB), setA.union(setB), вычитание - setA - setB, симметричная разность - ^; сравнение множеств: >, >=, <, <=, ==, !=,
Генераторы: например : множество a = {x 2 for x in range(1, 5)}, словарь a = {x: x 2 for x in range(1, 5)},
Важные моменты из этого материала:
1) Словари в ключах могут содержать только неизменяемые типы данных. Причем элемента ключа должны быть так же неизменяемы, иначе словите ошибку "unhashable type: 'list'"
2) Различие методов при удалении элемента словаря: d.remove(), d.discard(). В 1 случае вызовет ошибку, если нет ключа в словаре, во втором - нет
3) Кортежи - это неизменяемый тип данных. Однако изменяемые элементы его мы можем поменять🤓 Т.к. всё в питоне на ссылках на объекты завязано. Значит ссылку мы не меняем, а объект, на который ссылается эта ссылка можем сделать другим. И ничего не нарушим, кортеж остается тем же. т.е. его элементы будут ссылаться на изначальные объекты.
4) При копирование кортежа срезом по типу t[::] не будет получен новый кортеж, а просто будет еще одна переменная с сылкой на изначальный кортеж, который мы хотели копировать срезом.(со списками, например мы получаем новый объект)
5) Элементами множества могут быть только неизменяемые типы данных! При попытке запихнуть туда например список, получим ошибку, как в 1 пункте.
6) Генераторы. Не существует генератора кортежей, есть просто генератор, из которого мы можем получит кортеж при помощи встроенной функии tuple().
7) Морж. Самый "ленивая" операция присваивания. Имеет наименьше приоритет,т.е. срабатывает самой последней. И дабы избежать ошибок, всегда лучше оборачивать в скобки выражения типо (n = int(input())), или какие-то другие. Сколько раз я себя на этом ловил...теперь всегда оборачиваю в скобки его. Плюс так же лишний раз его лучше стараться не использовать, чтобы не получить неожидаемой работы программы. И такое может быть🙃
Итоги дня и выводы:
Сейчас закончил главу 6, про словари, множества, кортежи. На самом деле она составлена слабее, по сравнению с другими. Можно было б разделить на три и дописать побольше. Многие моменты не рассказаны. Пробежались вскользь. На каждый тип данных по 1 видосу, ну и дальше еще немного практики с их методами. Такими темпами, если проходить по 1 главе в день, то скоро закончу и перейду к ООП.
А еще впервые за последнее время хочется больше заниматься, т.к. попадаются такие задачи и получаешь кайф после их решения. Плюс пока еще могу много времени уделять обучению, надо это делать. Вдруг потом такого момента может не быть.☹️
🤯3
Интересная задачка дня:
ссылка на саму задачу, на ее тесты
Интересно как вы ее решите, мне кажется у меня был не самый лучший подход🫣. Хотелось бы сравнить - Скидывайте код в комментарии😈Немного позже напишу свой вариант под постом в закрытом виде.
ссылка на саму задачу, на ее тесты
Интересно как вы ее решите, мне кажется у меня был не самый лучший подход🫣. Хотелось бы сравнить - Скидывайте код в комментарии😈Немного позже напишу свой вариант под постом в закрытом виде.
🤯2
Вчера захотел пройти всю главу функции. Но посмотрел количество тем и какие они - решил разбить. Оставил на сегодня более сложные темы. Помню раньше с ними были проблемы в понимании, так что лучше не спешить. Я про области видимости, замыкания и декораторы. Думаю пару раз точно материал просмотрю. Ну а ниже опишу что успел прошлым днем.
Сделанное за вчера:
🔘) Чуть больше 2 видеолекций (129 минут, если быть точнее), все еще не лень считать)😄И плюс это же не Докер😂
🔘) Решены все, кроме одной, задачи по этим темам.
🔘) Пройдена глава про функии, частично:
1) Функции: Темы: Что такое функции, объявление и вызов; оператор return, алгоритм Евклида, параметры и аргументы функций, произвольное кол-во параметров в функции (*args, kwargs), операторы *, ** для распаковки коллекций, рекурсивные функции, анонимные (lambda) функции.
Кто захочет более подробно - почитает тут (первые 8 тем слева)
Основные моменты из этого материала:
1) def funс(): pass. func - это лишь ссылка на функцию, а чтобы ее вызвать необходимо после имени добавить (). В ООП потом пригодится.
2) функция всегда что-то возвращает оператором return, по умолчанию это None. Поэтому некоторые методы меняют переменную на месте, а некоторые возвращают новый объект. (методы списков vs методы строк)
3) необходимо отличать параметры функции от аргументов функций. Параметры - это то что передается в функцию, когда мы ее создаем, а аргументы - то, когда вызываем. Т.е. получается, что аргументы функции ссылаются на параметры, заданные при ее объявлении(так, мысли вслух)
4) переменные объявленные в теле функции доступны только в ней (P.S. в самом простом случае, без доп. данных)
5) обязательные(фактические) и необязательные(параметры по умолчанию/формальные). По разному называются, но смысл один. Сначала записываются первые, потом вторые.
6) *args - обязательных параметров, **kwargs - словарь параметров по умолчанию. Так принято называть, если мы создаем функцию и заранее не известно сколько там будет параметров или аргументов при ее вызове.
7) lambda - функция. Функция в одну строчку, без оператора return. Простой формат применения. lambda x, y: x + y. Где слева от двоеточия параметры, которые она принимает, а справа, что возвращает.
8) рекурсивная функция - это та, которая вызывает саму себя, либо в теле функции, либо в операторе return. Но не забывайте условие для выхода в этом случае.
Итоги дня и выводы:
На самом деле это одна из важных тем и лучше ее понимать хорошо. Функции Абсолютно везде используются в программировании. Например, я помню как несколько лет назад мне дали небольшое тестовое и я там нагородил штук 300 кода)А по итогу можно было и за 50, если не меньше, управится. Естественно я дальше не прошёл, но тогда я удивлялся почему же так произошло😂😂😂Благо мне хоть дали обратную связь и сказали про функциональный подход в программировании. Don't Repeat Yourself.
Сделанное за вчера:
🔘) Чуть больше 2 видеолекций (129 минут, если быть точнее), все еще не лень считать)😄И плюс это же не Докер😂
🔘) Решены все, кроме одной, задачи по этим темам.
🔘) Пройдена глава про функии, частично:
1) Функции: Темы: Что такое функции, объявление и вызов; оператор return, алгоритм Евклида, параметры и аргументы функций, произвольное кол-во параметров в функции (*args, kwargs), операторы *, ** для распаковки коллекций, рекурсивные функции, анонимные (lambda) функции.
Основные моменты из этого материала:
1) def funс(): pass. func - это лишь ссылка на функцию, а чтобы ее вызвать необходимо после имени добавить (). В ООП потом пригодится.
2) функция всегда что-то возвращает оператором return, по умолчанию это None. Поэтому некоторые методы меняют переменную на месте, а некоторые возвращают новый объект. (методы списков vs методы строк)
3) необходимо отличать параметры функции от аргументов функций. Параметры - это то что передается в функцию, когда мы ее создаем, а аргументы - то, когда вызываем. Т.е. получается, что аргументы функции ссылаются на параметры, заданные при ее объявлении(так, мысли вслух)
4) переменные объявленные в теле функции доступны только в ней (P.S. в самом простом случае, без доп. данных)
5) обязательные(фактические) и необязательные(параметры по умолчанию/формальные). По разному называются, но смысл один. Сначала записываются первые, потом вторые.
6) *args - обязательных параметров, **kwargs - словарь параметров по умолчанию. Так принято называть, если мы создаем функцию и заранее не известно сколько там будет параметров или аргументов при ее вызове.
7) lambda - функция. Функция в одну строчку, без оператора return. Простой формат применения. lambda x, y: x + y. Где слева от двоеточия параметры, которые она принимает, а справа, что возвращает.
8) рекурсивная функция - это та, которая вызывает саму себя, либо в теле функции, либо в операторе return. Но не забывайте условие для выхода в этом случае.
Итоги дня и выводы:
На самом деле это одна из важных тем и лучше ее понимать хорошо. Функции Абсолютно везде используются в программировании. Например, я помню как несколько лет назад мне дали небольшое тестовое и я там нагородил штук 300 кода)А по итогу можно было и за 50, если не меньше, управится. Естественно я дальше не прошёл, но тогда я удивлялся почему же так произошло😂😂😂Благо мне хоть дали обратную связь и сказали про функциональный подход в программировании. Don't Repeat Yourself.
proproprogs.ru
#35. Функции: первое знакомство, определение def и их вызов | Python для начинающих
Узнаете, что такое функции в Python, зачем они нужны в программировании, как объявить свою собственную функцию и вызвать ее.
👍4
Спустя 6 часов реального времени между фотками на курсе прошло 3 часа. Чую что-то тут не чисто🧐🧐🧐
❤3😁2🤩1
Всем доброе утро! Ну а что? Считаю, когда проснулся - тогда и утро😼
Так вот, вчера просмотрел теорию по темам ниже, порешал задачки. Но оставил несколько штук на завтра, чтобы еще раз просмотреть видео и прорешать еще раз, так сказать обновить багаж забытых знаний. Но тут я попал я попал в какое-то утро сурка😬 (Отсылка к фильму "день сурка", вдруг кто не видел). Проснулся ж значит, и по плану было повторить темы замыкания, декораторы. и декораторы с параметрами. Достал наушники, (чтобы соседи не мешали своим ремонтом😬😬😬). включаю значит. Тему с замыканиями прослушал. Дальше декораторы пошли. И хоба, прикемарил на минуте 3-5-ой. Смотрел с закрытыми глазами. Думаю ну ладно, раз последнюю часть не помню - дай повторю. Ииии...опять уснул. В итоге так было раз 5😂😂😂Дольше 5 минуты видео не доходил. В итоге потом с открытыми глазами дослушал. Ах да, я еще поставил изначально скорость на 0.75(мб поэтому и засыпал), чтобы лучше понять. Хотя автор и так достаточно не быстро говорить, но решил все равно замедлить, дабы не останавливать видео на каких-то моментах каждый. раз. Вот такое вот утро вышло. Только в дне сурка главный герой много чего разного успевал изучить, а я, блин, один и тот же материал по кругу, не до конца😢
Сделанное за вчера и сегодня утро:
🔘) Почти час видео (150+ минут, если быть точнее😑😑😑), все еще не лень считать)😄
🔘) Дорешены задачи в этой главе 👇
🔘) Допройдена глава про функции:
1) Функции: Темы: Области видимости переменных. Ключевые слова global и nonlocal; Замыкания в Python; Декораторы функций, Декораторы с параметрами
Более подробно - почитает тут (первые 9-12 тем слева)
Основные моменты из этого материала:
1) Замыкания. Сейчас на кривом русском попробую объяснить как я это понимаю.🙃Мне кажется на собесе лучше так не отвечать😂Читайте на свой страх и риск запутаться😅
Крч. как я вижу это, Если мы создаем функцию, внутри которой создается другая функция. Затем мы возвращаем внутреннюю функцию(без вызова). просто ссылку(имя) на нее. Далее в программе результат вызова внешней функции присваиваем какой-то глобальной переменной - это и будет ссылка на нашу внутреннюю функцию. И можем ее вызывать, причем с теми переменными, которые были в параметрах внешней функции. Хотя казалось бы внешняя функция уже завершила свою работу( мы ее же вызывали). Однако, пока у нас имеется глобальная ссылка на внутреннее локальное окружение(внутренней функции), то это окружение не удаляется сборщиком мусора, и поэтому существует и следующее внешнее окружение внешней функции для этой внутренней функции, и т.д. А значит и все переменные для внутренней функций из внешней. Уф🫣
отом отдельный пост, с картинкой и пояснением из текста автора, так думаю будет нагляднее
2) Декораторы. Это и есть замыкания, на них они работают. Декораторы - это "обёртка" для функии. Т.е. позволяет изменить поведение функции, не изменяя ее саму. Логика такая же как в замыканиях.
3) Декораторы с параметрами. Это тот же декоратор, но только мы обычный декоратор оборачиваем еще одной функцией, в параметры которые можем что-то передать. Тем самым еще добавить изменений, к уже обновленной версии работы функции.
Простой пример. Есть функция, которая считает значение косинуса в точке "х"(которую мы передаем в эту функцию". Мы можем создать декоратор, который будет считать производную численно с какой-то фиксированной точностью dx. Т.е. функция вместо косинуса х будет считать значение производной в этой точке. А если декоратор с параметрами. то мы можем например выбирать эту точность dx, до нужной нам дельты. Вот и вся суть🙃
Итоги дня и выводы:
Ой помню как у меня полыхало в первый раз от непонимания этих тем😂Но потом разобрался и все прошло) Не отчаивайтесь если что-то не получается, просто вам нужно чуть больше времени и практики для этого. А в данном случае главное понять как работают области видимости и замыкание, и тогда проблем с декораторами не будет. А если как я иногда забываете в них что-то - ничего страшного, потом легко можете восполнить знания, повторив теорию и написав несколько штук.
Так вот, вчера просмотрел теорию по темам ниже, порешал задачки. Но оставил несколько штук на завтра, чтобы еще раз просмотреть видео и прорешать еще раз, так сказать обновить багаж забытых знаний. Но тут я попал я попал в какое-то утро сурка😬 (Отсылка к фильму "день сурка", вдруг кто не видел). Проснулся ж значит, и по плану было повторить темы замыкания, декораторы. и декораторы с параметрами. Достал наушники, (чтобы соседи не мешали своим ремонтом😬😬😬). включаю значит. Тему с замыканиями прослушал. Дальше декораторы пошли. И хоба, прикемарил на минуте 3-5-ой. Смотрел с закрытыми глазами. Думаю ну ладно, раз последнюю часть не помню - дай повторю. Ииии...опять уснул. В итоге так было раз 5😂😂😂Дольше 5 минуты видео не доходил. В итоге потом с открытыми глазами дослушал. Ах да, я еще поставил изначально скорость на 0.75(мб поэтому и засыпал), чтобы лучше понять. Хотя автор и так достаточно не быстро говорить, но решил все равно замедлить, дабы не останавливать видео на каких-то моментах каждый. раз. Вот такое вот утро вышло. Только в дне сурка главный герой много чего разного успевал изучить, а я, блин, один и тот же материал по кругу, не до конца😢
Сделанное за вчера и сегодня утро:
🔘) Почти час видео (150+ минут, если быть точнее😑😑😑), все еще не лень считать)😄
🔘) Дорешены задачи в этой главе 👇
🔘) Допройдена глава про функции:
1) Функции: Темы: Области видимости переменных. Ключевые слова global и nonlocal; Замыкания в Python; Декораторы функций, Декораторы с параметрами
Б
Основные моменты из этого материала:
1) Замыкания. Сейчас на кривом русском попробую объяснить как я это понимаю.🙃Мне кажется на собесе лучше так не отвечать😂Читайте на свой страх и риск запутаться😅
отом отдельный пост, с картинкой и пояснением из текста автора, так думаю будет нагляднее
2) Декораторы. Это и есть замыкания, на них они работают. Декораторы - это "обёртка" для функии. Т.е. позволяет изменить поведение функции, не изменяя ее саму. Логика такая же как в замыканиях.
3) Декораторы с параметрами. Это тот же декоратор, но только мы обычный декоратор оборачиваем еще одной функцией, в параметры которые можем что-то передать. Тем самым еще добавить изменений, к уже обновленной версии работы функции.
Простой пример. Есть функция, которая считает значение косинуса в точке "х"(которую мы передаем в эту функцию". Мы можем создать декоратор, который будет считать производную численно с какой-то фиксированной точностью dx. Т.е. функция вместо косинуса х будет считать значение производной в этой точке. А если декоратор с параметрами. то мы можем например выбирать эту точность dx, до нужной нам дельты. Вот и вся суть🙃
Итоги дня и выводы:
Ой помню как у меня полыхало в первый раз от непонимания этих тем😂Но потом разобрался и все прошло) Не отчаивайтесь если что-то не получается, просто вам нужно чуть больше времени и практики для этого. А в данном случае главное понять как работают области видимости и замыкание, и тогда проблем с декораторами не будет. А если как я иногда забываете в них что-то - ничего страшного, потом легко можете восполнить знания, повторив теорию и написав несколько штук.
👍6❤1
**✅Викторина. Что выведет этот код? **
my_tuple = (-4.3, True, [15, 16], {'Кодим': 'Вместе'}, {'r', 'g', b''})
my_tuple[2].append(23) print(my_tuple)
my_tuple = (-4.3, True, [15, 16], {'Кодим': 'Вместе'}, {'r', 'g', b''})
my_tuple[2].append(23) print(my_tuple)
Anonymous Quiz
17%
NameError: name 'b' is not defined
6%
(-4.3, True, [15, 16], {'Кодим': 'Вместе'}, {'r', 'g', b''})
33%
Ошибка: 'tuple' object does not support item assignment
44%
(-4.3, True, [15, 16, 23], {'Кодим': 'Вместе'}, {b'', 'r', 'g'})
🤯3