This media is not supported in your browser
VIEW IN TELEGRAM
Бинарный поиск — что за алгоритм
Про бинарный поиск вы могли слышать где угодно: форумы, статьи, задачи да и просто от какого-то ITшника. Давайте разберёмся.
Это алгоритм для поиска элемента в отсортированном массиве. Применяться может, например, для поиска по словарю, телефонному справочнику или базе данных. Принцип основан на деления пополам:
1. Берём центральный элемент массива и сравниваем его с искомым числом.
2. Если искомое число больше серединного элемента — значит нас интересует первая половина массива. Если меньше — вторая.
3. Повторяем п. 1 и п. 2 с выбранной половиной до тех пор, пока не дойдём до искомого элемента. Каждый раз отсеивается половина элементов.
Популярность алгоритма вызвана его большой скоростью выполнения. Последовательный поиск по массиву из 1000 элементов может занять в крайнем случае 1000 операций, а бинарным поиском — максимум 10. А массив из миллиона элементов — максимум за 20 операций.
На картинке разница простого и бинарного поиска.
#алгоритм #теория
Про бинарный поиск вы могли слышать где угодно: форумы, статьи, задачи да и просто от какого-то ITшника. Давайте разберёмся.
Это алгоритм для поиска элемента в отсортированном массиве. Применяться может, например, для поиска по словарю, телефонному справочнику или базе данных. Принцип основан на деления пополам:
1. Берём центральный элемент массива и сравниваем его с искомым числом.
2. Если искомое число больше серединного элемента — значит нас интересует первая половина массива. Если меньше — вторая.
3. Повторяем п. 1 и п. 2 с выбранной половиной до тех пор, пока не дойдём до искомого элемента. Каждый раз отсеивается половина элементов.
Популярность алгоритма вызвана его большой скоростью выполнения. Последовательный поиск по массиву из 1000 элементов может занять в крайнем случае 1000 операций, а бинарным поиском — максимум 10. А массив из миллиона элементов — максимум за 20 операций.
На картинке разница простого и бинарного поиска.
#алгоритм #теория
Регулярные выражения для начинающих
Регулярные выражения — это инструмент, который позволяет определять, находить и заменять текст по определённому паттерну, состоящему из специальных символов. Простейший пример — нужно удостовериться, что эл. почта или моб. телефон в форме ввода действительно корректны, а не "фывфыв". Поддержка регулярных выражений есть в любом языке программирования.
Например, так выглядит регулярное выражение для телефонных номеров по типу 123-456-7890:
где
Шпаргалки по регулярным выражениям стали своего рода мемом, ведь из-за сложности синтаксиса к ним регулярно обращаются даже бывалые разработчики. Поэтому держите шпаргалку в картинке, а также ИИ-инструмент, который по текстовому запросу сгенерирует вам необходимую регулярку.
#теория #регулярноевыражение
Регулярные выражения — это инструмент, который позволяет определять, находить и заменять текст по определённому паттерну, состоящему из специальных символов. Простейший пример — нужно удостовериться, что эл. почта или моб. телефон в форме ввода действительно корректны, а не "фывфыв". Поддержка регулярных выражений есть в любом языке программирования.
Например, так выглядит регулярное выражение для телефонных номеров по типу 123-456-7890:
\d{3}-\d{3}-\d{4}
где
\d
— символ цифры, {3}
— количество повторений, -
необходимый разделитель.Шпаргалки по регулярным выражениям стали своего рода мемом, ведь из-за сложности синтаксиса к ним регулярно обращаются даже бывалые разработчики. Поэтому держите шпаргалку в картинке, а также ИИ-инструмент, который по текстовому запросу сгенерирует вам необходимую регулярку.
#теория #регулярноевыражение
www.text2sql.ai
TEXT2SQL.AI - The best SQL AI tool!
The ultimate AI Data Hub: Build complex SQL queries, Excel Formulas, and Regex Expressions using AI with API access!
5 ошибок Python-разработчиков, которые выдают новичка
У начинающих специалистов может складываться впечатление, что рабочий код — готовый код. По мере роста скилов и опыта, становится понятно, что код рекомендуется писать не только рабочим, но и чистым. А также поддерживать в разработке определённые стандарты. Они относятся не только к коду, но и к тестам, ведению Git, да и просто к базовым знаниям технологий.
Собрали для вас самые распространенные ошибки в Python-разработке в этой статье. Особенно полезной будет тем, кто собирает портфолио для трудоустройства или хочет получить простые, но практичные советы.
#советы #python
У начинающих специалистов может складываться впечатление, что рабочий код — готовый код. По мере роста скилов и опыта, становится понятно, что код рекомендуется писать не только рабочим, но и чистым. А также поддерживать в разработке определённые стандарты. Они относятся не только к коду, но и к тестам, ведению Git, да и просто к базовым знаниям технологий.
Собрали для вас самые распространенные ошибки в Python-разработке в этой статье. Особенно полезной будет тем, кто собирает портфолио для трудоустройства или хочет получить простые, но практичные советы.
#советы #python
Чистим код: советы по именованию
Записываем в блокнотик:
— Все сущности должны иметь понятные и удобнопроизносимые имена (т.е. никаких
— Длина названия должна быть пропорциональна области видимости сущности. Вот почему итераторы в маленьких циклах можно называть
— Имена классов должны представлять собой существительные или их комбинации.
— Методы в своём названии должны содержать глагол, описывающий действие метода. Если глагол не подобрать — задумайтесь, точно ли эта сущность должна быть методом?
— Стоит избегать названий со словами
— Если есть группа переменных с общим префиксом, то его ставим в конце, а различные части — вначале:
#чистимкод #теория
Записываем в блокнотик:
— Все сущности должны иметь понятные и удобнопроизносимые имена (т.е. никаких
a1, a2, a3, temp, foo
). Не бойтесь потратить на придумывание названия переменной более 5 секунд. В будущем вы от этого только выиграете. — Длина названия должна быть пропорциональна области видимости сущности. Вот почему итераторы в маленьких циклах можно называть
i
, j
, k
, а какие-то глобальные константы лучше по типу MAX_REQUEST_COUNT
.— Имена классов должны представлять собой существительные или их комбинации.
— Методы в своём названии должны содержать глагол, описывающий действие метода. Если глагол не подобрать — задумайтесь, точно ли эта сущность должна быть методом?
— Стоит избегать названий со словами
And
, With
, т.к. они нарушают принцип единой ответственности (хотя бывают и исключения).— Если есть группа переменных с общим префиксом, то его ставим в конце, а различные части — вначале:
StartButton, StopButton
, а не ButtonStart, ButtonStop
. Так проще находить нужное в группе нескольких переменных.#чистимкод #теория
👍1
Игры, помогающие прокачать логику и понимание алгоритмов
Держите целую подборку игр (более 20 штук), которые отлично подойдут начинающим в программировании. Вот некоторые из них:
Colobot — знакомая многим игра для простого изучения программирования. Язык C-подобный. По сюжету нужно найти новую планету для жизни.
The Nand Game — бесплатная браузерка, где вы собираете компьютер, начиная с самых базовых элементов.
Screeps — ММО стратегия, где вы программируете поведение своих «юнитов».
The Signal State — игра в стиле постапокалипсиса, где вы играете за техника и должны решить 40 головоломок (это она на превью).
BOX-256 — 8-битный компьютер с 256 памяти и 16-цветным дисплеем. Для настоящих олдов.
Oh My Git! — игра для обучения Git. Там визуализируются внутренние структуры репозиториев. Игра опенсорс, так что можно покопаться в исходниках.
#игры #развивающее
Держите целую подборку игр (более 20 штук), которые отлично подойдут начинающим в программировании. Вот некоторые из них:
Colobot — знакомая многим игра для простого изучения программирования. Язык C-подобный. По сюжету нужно найти новую планету для жизни.
The Nand Game — бесплатная браузерка, где вы собираете компьютер, начиная с самых базовых элементов.
Screeps — ММО стратегия, где вы программируете поведение своих «юнитов».
The Signal State — игра в стиле постапокалипсиса, где вы играете за техника и должны решить 40 головоломок (это она на превью).
BOX-256 — 8-битный компьютер с 256 памяти и 16-цветным дисплеем. Для настоящих олдов.
Oh My Git! — игра для обучения Git. Там визуализируются внутренние структуры репозиториев. Игра опенсорс, так что можно покопаться в исходниках.
#игры #развивающее
Хабр
Ещё 20+ игр, которые прокачивают логику, алгоритмы и радуют умный мозг [по следам комментариев на Habr]
Я выложила вчера подборку « 15 игр, которые прокачивают логику, алгоритмы, ассемблер и силу земли ». И столько классных ссылок в комментарии накидали, что я чуток опухла, но сделала отдельную...
Паттерны MVC, MVP и MVVM — что это
Семейство MV*-паттернов — популярная тема у программистов. Про неё любят спрашивать на собеседованиях и указывать в вакансиях. Давайте разберёмся, что это:
MV*-паттерны — паттерны для организации архитектуры кода. Они улучшают его строение, читаемость и обеспечивают эффективную работу приложения. Каждый из них разделяет программную логику на 3 составляющих:
MVC — Model-View-Controller. Тут модель хранит в себе данные, представление отвечает за отображение этих данных, а контроллер реагирует на ввод пользователя, оповещая об этом модель.
MVP — Model-View-Presenter. Тут модель хранит бизнес-логику, представление отображает данные, а презентер реализует взаимодействие между моделью и представлением.
MVVM — Model-View-ViewModel. Модель отвечает за хранение данных и бизнес-логику. Представление — отображает данные и обрабатывает пользовательский ввод. Модель представления преобразует данные из модели для представления и уведомляет модель о вводе.
Подробнее в статье
#теория
Семейство MV*-паттернов — популярная тема у программистов. Про неё любят спрашивать на собеседованиях и указывать в вакансиях. Давайте разберёмся, что это:
MV*-паттерны — паттерны для организации архитектуры кода. Они улучшают его строение, читаемость и обеспечивают эффективную работу приложения. Каждый из них разделяет программную логику на 3 составляющих:
MVC — Model-View-Controller. Тут модель хранит в себе данные, представление отвечает за отображение этих данных, а контроллер реагирует на ввод пользователя, оповещая об этом модель.
MVP — Model-View-Presenter. Тут модель хранит бизнес-логику, представление отображает данные, а презентер реализует взаимодействие между моделью и представлением.
MVVM — Model-View-ViewModel. Модель отвечает за хранение данных и бизнес-логику. Представление — отображает данные и обрабатывает пользовательский ввод. Модель представления преобразует данные из модели для представления и уведомляет модель о вводе.
Подробнее в статье
#теория
This media is not supported in your browser
VIEW IN TELEGRAM
Нашёл ещё один отличный значок загрузки для сайта.
Кто-нибудь знает, как найти codepen проекта?
#юмор
Кто-нибудь знает, как найти codepen проекта?
#юмор
😁6
Разница между переменными значимого и ссылочного типа
Понимание различий между переменной значения (value variable) и ссылочной переменной (ref variable) считается фундаментальными знаниями практически в любом стеке. Также эта тема может подниматься на собеседованиях на позицию junior-разработчика. И вот в чем разница:
Когда мы оперируем переменной значимого типа (присваиваем, передаём аргументом в функцию, кешируем и т. д.), то мы оперируем непосредственным значением переменной (например, числом или буленом). То есть когда переменной А присваивается значение переменной Б, то переменной А назначается копия Б, которая никак не зависит от оригинала. Если же потом переменная Б изменяется, это никак не отражается на значении переменной А. Пример из жизни: подруга попросила у вас книгу, вы отдаёте ей ксерокопию книги. Если потом подруга решит разрисовать свою копию, на вашем оригинале книги это никак не отразится.
Когда мы оперируем переменными ссылочного типа, то мы оперируем лишь указателем на переменную, а не его непосредственным значением. Если переменной А присваивается Б, то в А никакого значения не хранится, а хранится лишь ссылка на Б. В таком случае, если меняется значение Б, то и значение А тоже изменяется. Пример: подруга попросила у вас книгу и вы даёте ей номер нужной книги в библиотеке — она может пользоваться оригиналом. Если она решит разрисовать книгу — она разрисует оригинал.
Это далеко не единственное отличие между этими типами, но крайне важное.
#теория
Понимание различий между переменной значения (value variable) и ссылочной переменной (ref variable) считается фундаментальными знаниями практически в любом стеке. Также эта тема может подниматься на собеседованиях на позицию junior-разработчика. И вот в чем разница:
Когда мы оперируем переменной значимого типа (присваиваем, передаём аргументом в функцию, кешируем и т. д.), то мы оперируем непосредственным значением переменной (например, числом или буленом). То есть когда переменной А присваивается значение переменной Б, то переменной А назначается копия Б, которая никак не зависит от оригинала. Если же потом переменная Б изменяется, это никак не отражается на значении переменной А. Пример из жизни: подруга попросила у вас книгу, вы отдаёте ей ксерокопию книги. Если потом подруга решит разрисовать свою копию, на вашем оригинале книги это никак не отразится.
Когда мы оперируем переменными ссылочного типа, то мы оперируем лишь указателем на переменную, а не его непосредственным значением. Если переменной А присваивается Б, то в А никакого значения не хранится, а хранится лишь ссылка на Б. В таком случае, если меняется значение Б, то и значение А тоже изменяется. Пример: подруга попросила у вас книгу и вы даёте ей номер нужной книги в библиотеке — она может пользоваться оригиналом. Если она решит разрисовать книгу — она разрисует оригинал.
Это далеко не единственное отличие между этими типами, но крайне важное.
#теория
Статическая и динамическая типизация — кто эти двое и в чём ключевая разница?
Статическая и динамическая типизация — это два основных подхода к обработке типов данных в программировании.
В статической типизации тип данных переменной определяется на этапе написания кода и остаётся неизменным во время выполнения программы.
В динамической типизации тип переменной определяется во время выполнения программы, что позволяет ей изменяться в зависимости от присвоенных значений.
Статическая типизация обычно обеспечивает большую надёжность, так как позволяет обнаруживать ошибки на этапе компиляции, в то время как динамическая типизация обеспечивает большую гибкость в разработке. Некоторые языки программирования поддерживают один из типов типизации, другие же — оба типа.
@programmer_ways #теория
Статическая и динамическая типизация — это два основных подхода к обработке типов данных в программировании.
В статической типизации тип данных переменной определяется на этапе написания кода и остаётся неизменным во время выполнения программы.
В динамической типизации тип переменной определяется во время выполнения программы, что позволяет ей изменяться в зависимости от присвоенных значений.
Статическая типизация обычно обеспечивает большую надёжность, так как позволяет обнаруживать ошибки на этапе компиляции, в то время как динамическая типизация обеспечивает большую гибкость в разработке. Некоторые языки программирования поддерживают один из типов типизации, другие же — оба типа.
@programmer_ways #теория
👍1
Объяснение
Работа со строками в Python: базовые операции
Сложение (конкатенация)
Строки, как и числа, можно складывать, проще говоря, склеивать между собой с помощью оператора +. Эту операцию иногда называют «сцеплением».
Результат:
Дублирование (умножение)
В языке Python строки можно умножать на целые числа. Операция работает просто — повторяет содержимое переменной указанное количество раз. Например:
В результате получим:
На приведенном в задании изображении в первой строке происходит дублирование строки "Python" 2 раза. А вот во второй строке произойдешь ошибка, т.к. Python приводит запись "2.0" к вещественному типу данных (float), но недопустимо дублирование строки на вещественное значение.
Работа со строками в Python: базовые операции
Сложение (конкатенация)
Строки, как и числа, можно складывать, проще говоря, склеивать между собой с помощью оператора +. Эту операцию иногда называют «сцеплением».
s1 = 'Skill'
s2 = 'box'
s3 = s1 + s2
print(s3)
Результат:
Skillbox
Дублирование (умножение)
В языке Python строки можно умножать на целые числа. Операция работает просто — повторяет содержимое переменной указанное количество раз. Например:
st = 'ab ' * 6
print(st)
В результате получим:
ab ab ab ab ab ab
На приведенном в задании изображении в первой строке происходит дублирование строки "Python" 2 раза. А вот во второй строке произойдешь ошибка, т.к. Python приводит запись "2.0" к вещественному типу данных (float), но недопустимо дублирование строки на вещественное значение.
👍3
Разработка игры на Python — PyGame
PyGame — это мощный инструмент для создания игр на языке Python, позволяющий разработчикам реализовывать свои творческие идеи с помощью графики, звука и управления, и предоставляющий возможность создавать как простые, так и сложные игровые проекты.
Держите серию роликов, где автор подробно показывает процесс создания аналога Space Invaders — легендарной аркадной игры, ставшей культовым явлением в мире видеоигр. В ней игроки управляют космическим кораблем, стреляя по наступающим рядам инопланетных захватчиков.
@путьпрограммиста #python #gamedev #практика
PyGame — это мощный инструмент для создания игр на языке Python, позволяющий разработчикам реализовывать свои творческие идеи с помощью графики, звука и управления, и предоставляющий возможность создавать как простые, так и сложные игровые проекты.
Держите серию роликов, где автор подробно показывает процесс создания аналога Space Invaders — легендарной аркадной игры, ставшей культовым явлением в мире видеоигр. В ней игроки управляют космическим кораблем, стреляя по наступающим рядам инопланетных захватчиков.
@путьпрограммиста #python #gamedev #практика
YouTube
Разработка игры на Python | Pygame. Урок #1
Начинаем делать игру по мотивам "Space Invaders" на языке программирования Python с использованием библиотеки Pygame. Установим модули, настроим и отрисуем на экране изображение пушки из нашей будущей игры.
Не забываем подписываться!
------
Все уроки по…
Не забываем подписываться!
------
Все уроки по…
👨💻2👍1