2023-python co-made by Milly
- Для работы необходим python 3.9 и выше.
- numpy
- matplotlib
- tkinter
- IDLE (родной, идёт вместе с установщиком)
- Visual Studio Code, notepad++
- PyCharm
- vim (для любителей сначала страдать, потом наслаждаться)
-
Работа с блокнотами онлайн, с возможностью подключение удалённых мощностей гугла (GPU, TPU):
-
Презентация (будет обновляться в течение семестра):
-
Хорошая книга по python, очень простым языком и на понятных примерах:
-
Сервер в Дискорд, где буду дублировать:
- Мой контакт:
- В своей папке можете делать все что угодно, в чужие не залезать, в корневую тоже.
- Я буду ориентироваться на файлы, где в названии будет номер лабораторной.
- свои ФИО, число, месяц, год рождения в виде кортежа;
- предметы в школьном аттестате (не меньше 14), как словарь из названия и оценки (можно мокать);
- имена (только) ближайших (до двоюродных включительно) родственников в списке;
- имя, которое вы бы дали своей домашней пушистой киве (строка).
- вывести среднюю оценку в аттестате;
- вывести, исключив повторения, все различные имена среди своих родственников (включая свое);
- общая длина всех названий предметов;
- уникальные буквы в названиях предметов;
- имя вашей домашней пушистой кивы в бинарном виде;
- отсортированный по алфавиту (в обратном порядке) список родственников;
- количество дней от вашей даты рождения до текущей даты (должна быть всегда актуальной);
- FIFO очередь, в которую можно добавлять предметы по вводимому с клавиатуры индексу (до команды остановки), после введения - вывести все;
- по введеному индексу, поменять имя в отсортированном списке родственников на имя ацтекского правителя () под номером, получаемым из вашей даты рождения: number = (day + month**2 + year) % 21 + 1;
- создать связный список, как словарь, где ключ - имя родственника, а значение - индекс следующего имени по исходному списку (к этому моменту, отсортированному в обратном алфавитном порядке), упорядоченному по их (родственников) годам рождения (года или создать отдельным списком, или просто держите их в уме при составлении связного -- оба варианта валидны), исходный список при этом должен остаться неизменным
- написать функцию-генератор (cвой вариант определяется как number = len("ФИО") * len (family_names) % 4):
- аликвотной последовательности;
- последовательности Сильвестра;
- числа трибоначчи;
- числа Леонардо.
- список целых чисел от 0 до 999999;
- список из 99999 случайных вещественных чисел в диапазоне [-1, 1];
- 42000 разных точки комплексной плоскости, лежащие в пределах окружности радиуса r = birth_day / birth_month (можно случайных, можно равномерно распределённых), сортировать по модулю;
- отрывок из книги (любой, на свой выбор) не менее 10000 слов, разбитый в список по словам.
Реализовать для каждого из исходных списков один из представленных алгоритмов сортировки (подробнее почитать о них тут). Выбор тех четырех алгоритмов, которые будут использованы конкретно у вас:
import random
random.sample(range(1, 18), 4) # вернет список из 4 случайных значений в заданном диапазоне, сделать один раз
- shaker sort, сортировка перемешиванием;
- bubble sort, сортировка пузырьком;
- comp sort, сортировка расческой;
- insertion sort, сортировка вставкой;
- Shellsort, сортировка Шелла;
- tree sort, сортировка деревом;
- Gnome sort, гномья сортировка;
- selection sort, сортировка выбором;
- Heapsort, пирамидальная сортировка;
- Quicksort, быстрая сортировка;
- Merge sort, сортировка слиянием;
- Counting sort, сортировка подсчетом;
- Bucket sort, блочная (карманная) сортировка;
- Radix sort, поразрядная сортировка;
- least significant digit;
- most significant digit;
- bitonic sort, битонная сортировка;
- timsort, гибридная сортировка.
- файл с текстовым представлением лабиринта;
- координаты аватара;
- координаты ключа;
- координаты выхода (на одной из внешних границ);
- правила (алгоритм) нахождения пути до ключа и до выхода.
- В папке _3 запустить скрипт gen_lab_origin.py, подождать его работу несколько минут;
- Полученный файл maze-for-u.txt переместить в свою папку;
- Найти любой маршрут от начальной координаты аватара до ключа, используя (выбрать или все, или по номеру сезона, в который вы родились, начиная с зимы):
- з. алгоритм Дейкстры;
- в. поиск в ширину;
- л. поиск в глубину;
- о. жадный алгоритм.
- Используя А* со следующими параметрами (вес g(x), вес h(x), максимальная длина хранимого списка возможных шагов), найти оптимальный путь до ближайшего выхода;
- Сохранить в файл 'maze-for-me-done.txt', в котором точка ключа будет указана как '*', а сам маршрут построен точками к ключу и запятыми от него к выходу.
- класс аватара;
- класс моба, наследованный от черепахи;
- Добавить в класс аватар наследование от черепахи (для его отображения)
- Перенести в класс моба жадный алгоритм из 3 лабораторной, где целевая точка - координаты аватара. Длина каждого шага (ширина клетки шага) равна скорости (self.speed). Алгоритм при вызове возвращает новые координаты или направление (на ваш выбор). Можно реализовать как функцией-генератором, так и полной реализацией с пересчетом при каждом вызове.
- Перенести в класс аватара алгоритм А* из 3 лабораторной, где целевая точка - self.target. Алгоритм при вызове возвращает новые координаты или направление (на ваш выбор). Можно реализовать как функцией-генератором, так и полной реализацией.
- В файле lab4 импортировать оба класса, создать по объекту каждого класса (минимум по одному, максимум не ограничен) и запустить в общем цикле их алгоритмы построения маршрута, каждый такт перемещая их на величину скорости
- Типы данных.
- Логические и физические строки.
- Операторы и порядок вычислений.
- Циклы for и while.
- Функции и их параметры. Области видимости переменных.
- Аргументы функции по умолчанию. Ключевые аргументы.
- Функции с переменным числом параметров. Распаковка.
- Модули: импортирование, частичное импортирование, псевдонимы.
- Виды структур данных.
- Списки: генераторы, итерирование, распаковка.
- Циклы по итерируемым последовательностям.
- Кортежи.
- Множества.
- LIFO и FIFO очереди.
- Методы работы со строками.
- Передача кортежей и словарей в функции.
- Классы и объекты.
- Поля класса, поля объекта.
- SOLID принципы ООП.
- Паттерны проектирования.
- Антипаттерны проектирования.
- Работа с файлами.
- Анонимные (lambda) функции.
- Функции высшего порядка.
- Форматированный вывод строк.