Программы для программирования
20 subscribers
849 photos
1 video
26 files
41 links
Download Telegram
Forwarded from Python Education
​​Сортировка пузырьком

Для сортировки списков в Python уже есть встроенные функция sorted() и метод .sorted(), но достаточно важно самому знать хотя бы несколько реализаций.

Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит.

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

#списки #сортировка
Forwarded from Python Education
Упрощаем логирование

Для Pyhton есть овер-полезная библиотека, которая в разы упрощает систему логирования.

Установка: pip install loguru

Асинхронное логирование, структурированное логирование и много других фишек которые разрешат известную проблему.
Forwarded from Python Education
Кортежи в циклах

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

Мы можем разбирать сложные составные массивы, списки с помощью кортежей и циклов. Это очень полезный, удобный инструмент.
Forwarded from Python Education
hex, oct, bin

Приходилось вам раньше работать с различными системами счисления? Если да, то вы знаете, как написать программу переводящую из одной системы в другую. Пишется она довольно просто, но иногда стоит задача быстро написать код с какой-то популярной системой счисления. Обычно это двоичная, восьмеричная или шестнадцатеричная. Для всех этих систем есть встроенные функции, которые переводят в нужную нам систему!

Из 10-ричной:
hex - перевод в 16-ричную систему
oct - перевод в 8-ричную систему
bin - перевод в 2-ичную систему

А из любой системы счисления можно получить число максимально простым способом:
int(number, base)
Forwarded from Python Education
Библиотека Emoji

Смайлы стали неотъемлемой частью нашей жизни. И сейчас трудно представить сообщения без них. Поэтому существует библиотека, которая позволяет удобно использовать эмоджи.

С её помощью можно не только вставлять смайлы, но и находить их в тексте.

Можно комбинировать с другими библиотеками, данный модуль подойдет как для простого вывода, так и для украшения текста в ботах ВК или ТГ.

Ну а на картинке представим не работу библиотеки (она и так понятна), а интересный код, где вместо переменных используются эмоджи. Так делать нельзя, но код работает.
Forwarded from Python Education
Библиотека schedule

Гибкая библиотека для создания планировщика. Точнее с её помощью можно создавать задачи, которые будут выполняться с определенным интервалом. Промежуток настраивается как душе угодно и работает до выключения пользователем приложения.

Конечно можно было использовать стандартный таймер, но зачем изобретать велосипед? С данной библиотекой планировка задач станет намного проще и понятнее другим программистам.

Библиотеку необходимо установить:

install schedule
Forwarded from Python Education
Функции высшего порядка

Функции высшего порядка - функции принимающие или возвращающие другие функции. Очень говорящее название, запомнить очень просто

Чуть ранее мы говорили про lambda, они очень хорошо взаимодействуют с высшими функциями. Про одну из них мы говорили - map(). Она может принимать в себя лямбду, но это не дает такой большой функциональности.

Еще одна функция-итератор - filter()
Она поможет отфильтровать списки или итераторы. Первым принимает функцию, если она возвращает True, то пропускает элемент, вторым аргументом принимает список или итератор.

Не забывайте комбинировать функции!
Forwarded from Python Education
Избавляемся от вложенных циклов с помощью функции product

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

К счастью, существует очень полезная встроенная функция — product. Она является частью встроенного модуля Python — itertools. С ее помощью мы можем избавиться от вложенных циклов.
Forwarded from Python Education
Нахождение наиболее частых элементов списка

Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком Counter из библиотеки collections.

Метод Counter.most common(x) возвращает x кортежей, в которых первое значение – элемент, а второе – количество его повторений.
Forwarded from Python Education
MongoDB: Удаление документов

Чтобы удалить один документ, используй delete one(). Первый параметр метода delete one() — это объект запроса, определяющий, какой документ нужно удалить. Чтобы удалить более одного документа, используй метод delete many(). Чтобы удалить все документы в коллекции, передай пустой объект запроса в delete many().
Forwarded from Python Education
most common

Метод most common выводит список кортежей вида (элемент, число повторений). Аргумент соответствует желаемому числу кортежей. По умолчанию выводится список кортежей для всех элементов переданного списка.
Forwarded from Python Education
Функция sorted сортирует любые итерируемые объекты по возрастанию и возвращает итоговый список, т.е. в переменную d будет сохранен список [a, b, c]

a, b, c = d — происходит неявная распаковка списка d в переменные a, b и c, вследствие чего каждой переменной будет присвоено соответствующее значение:
a = a
b = b
c = c

d = c, b, a — присваиваем переменной d кортеж (c, b, a), таким образом d будет равно (с , b , a )

''.join(d) — объединяем элементы кортежа в одну строку без использования разделителей и получаем "cba"

Затем получившуюся строку выводим на экран и получаем ответ — cba
Forwarded from Python Education
SciPy: Расстояние Хэмминга

Расстояние Хэмминга — это метрика для сравнения двух строк двоичных данных. При сравнении двух двоичных строк одинаковой длины расстояние Хэмминга — это количество битовых позиций, в которых два бита различны. Используется для обнаружения или исправления ошибок при передаче данных по компьютерным сетям. Также применим в теории кодирования для сравнения слов данных одинаковой длины.
Forwarded from Python Education
Функция reduce

Модуль functools позволяет хорошо раскрыть функциональные возможности Python. Например, в functools есть интересная функция reduce, которая позволяет «сжимать» данные, применяя последовательно функцию и запоминая результат.

Таким образом, в примере выше reduce умножает 1 на 2, затем результат этого умножения на 3 и так далее.
Forwarded from Python Education
Управление экспортами

В некоторых языках имеются очень чёткие механизмы экспорта из модулей переменных, методов, интерфейсов. К примеру в Go экспортируются только сущности с именами с большой буквы. В Python другая картина — экспортируется всё. Но только не при использовании атрибута all .

В примере на картинке экспортируется только функция hja. А если оставить атрибут all пустым, при попытке экспорта из модуля ничего не будет экспортировано, но возникнет ошибка AttributeError.
Forwarded from Python Education
Отлавливаем ошибки с помощью assert

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

Если выполнить инструкцию assert с логическим выражением, результат которого равен True, ничего не произойдет. Но в случае с False будет сгенерировано исключение AssertionError.

Однако не нужно пытаться обработать исключение AssertionError блоком try-except. В таком случае assert теряет свой смысл.

В примере мы проверили, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
Forwarded from Python Education
TypeGuard

TypeGuard позволяет писать любое выражение и сообщать твоему средству проверки типов, что оно их сужает. Функция сужения типа — это функция, которая принимает хотя бы один аргумент и возвращает bool. Вместо пометки возвращаемого типа как bool используется TypeGuard[T], где True означает, что первый аргумент имеет тип T, а False — нет.
Forwarded from Python Education
Паттерн проектирования Singleton

Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.

Метод new вызывается для создания экземпляра класса перед вызовом init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).

В примере мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если экземпляр уже создан, то просто его возвращаем.

То есть при вызове конструктора класса Singleton будет возвращаться один и тот же объект из памяти
Forwarded from Python Education
Кэшированные атрибуты

Во встроенном пакете functools присутствует декоратор @cached_property, позволяющий кэшировать результат метода и загнать его в атрибут.

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

Подобное кэширование полезно в случаях, когда в методе производятся вычисления, которые нагружают систему и занимают много времени.
Forwarded from Python Education
Биномиальное распределение

Биномиальное распределение — это дискретное распределение. Оно описывает результат бинарных сценариев. К примеру, подброс монетки. Имеется три параметра: n - количество испытаний; p - вероятность появления каждого испытания (например, при подбрасывании монеты по 0,5); size - форма возвращаемого массива.
Forwarded from Python Education
wxPython: Контекстное меню и панель инструментов

Меню группируют все команды, которые ты можешь использовать в приложении. Панели инструментов обеспечивают быстрый доступ к наиболее часто используемым командам.