- •Математические операции.
- •Сложение, Вычитание, Умножение, Деление
- •Возведение в степень
- •Скалярные типы данных.
- •С оставные типы данных.
- •Операторы if/elif/else, for, while, in, for/else.
- •Последовательности и функции работы с ними.
- •Булевый тип данных.
- •Множества и функции работы с ними.
- •Отображения (словари) и функции работы с ними.
- •Строки и операции над строками.
- •5) S[start:top:step] (Срез)
- •Примеры использования функций форматного ввода-вывода (f, format, %).
- •Функции.
- •Управление памятью.
- •Виртуальная среда и менеджер пакетов.
- •Открытие и закрытие файлов.
- •Понятия ооп: класс, объект, наследование, переменные класса. Ооп по алан кей
- •Три вида наследования.
- •Переменные класса
- •Метод __init__, понятие self.
- •Протокол итерации.
- •Ctypes: пример использования.
- •Виды интерфейсов.
- •Графический интерфейс: ui/ux, этапы построения интерфейсов, золотое сечение.
- •Основы библиотеки tkinter.
- •Преимущества статического анализа кода
- •Недостатки статического анализа кода
- •Методы обеспечения качества по. Основные методы обеспечения качества по
- •Основы библиотеки pytest.
- •Алгоритмы поиска.
- •Прямой поиск (o(n))
- •Бинарный поиск (o(log n))
- •Алгоритмы сортировки.
- •Пузырьковая
- •Сортировка слиянием
Основы библиотеки pytest.
Pytest - модуль, позволяющий быстро писать небольшие тесты, которые впоследствии легко масштабируются на более крупные проекты.
Запуск командой pytest.
Название тестирующей функции должно начинаться с test_*.
Название скрипта, где описаны тестовые функции, должно выглядеть как test_*.py или *_test.py.
В тестирующих функциях используется инструкция assert. Эта булевая функция проверяет, является ли выражение после нее истинным. Если это не так, скрипт возвращает ошибку AssertionError, с которой можно работать. Например, assert 1 == 0 вернет ошибку, а assert 1 == 1 — нет.
Алгоритмы поиска.
Прямой поиск (o(n))
Самый банальный и простой поиск прямым перебором.
Бинарный поиск (o(log n))
Важное уточнение: Поиск работает только на отсортированной последовательности, т.к. основан на сравнении и предположении, что если искомый элемент меньше элемента из последовательности, то он меньше всех элементов после него
Суть: найти элемент, каждый раз сокращая область поиска вдвое. Задать центральный индекс и определить, в какой части последовательности находится искомый элемент. Следующую итерацию поиска проводить по этой части.
Алгоритмы сортировки.
Пузырьковая
- Временная сложность O(n^2)
- Устойчивая
- Не использует доп. память
Самая простая, интуитивная, но в то же время самая долгая сортировка
Суть: проходить по последовательности, сравнивая элементы попарно
Если определить транзитивный критерий сравнения, то такая сортировка может использоваться не только для чисел.
Сортировка слиянием
- Временная сложность O(n^2) (технически, в реальности она слегка быстрее пузырьковой)
- Устойчивая
- Не использует доп. память
Модификация пузырьковой сортировки. В алгоритм добавляются 2 основных улучшения:
1. Перебор последовательности постоянно меняет направление, т.е. за одну итерацию последовательность просматривается сначала в прямом, потом в обратном порядке. Таким образом, после первой итерации на место встанут наименьший и наибольший элементы, в отличие от только наибольшего в пузырьковой
2. Диапазон перебора с каждой итерацией уменьшается на 2 элемента, т.к. наибольший и наименьший из рассмотренных гарантированно занимают свои места после итерации