- •Ссылки на лекции
- •Лабораторная работа № 2. Приложение линейной структуры
- •Лабораторная работа № 3. Техника проведения процесса отладки
- •Лабораторная работа № 4. Работа с массивами.
- •Лабораторная работа № 5. Исследование основных операций python
- •Лабораторная работа № 6. Изучение программ с ветвлением и циклами
- •Лабораторная работа № 7. Изучение программ с ветвлением.
- •Лабораторная работа № 8. Изучение проверки типов данных.
- •Лабораторная работа № 9. Алгоритмы с массивами и функциями.
- •Лабораторная работа № 10. Классы
- •Лабораторная работа № 11. Классы. Свойства и наследие.
- •Лабораторная работа № 12. Основные принципы Numpy
- •Лабораторная работа № 13. Решение задач с numpy
- •Лабораторная работа № 14. Линейные уравнения
- •Лабораторная работа № 15. Загрузка и подготовка данных
- •Лабораторная работа № 16. Линейная регрессия
- •Лабораторная работа № 17. Линейная регрессия нескольких параметров
- •Лабораторная работа № 18. Оптимизация минимизации
- •Лабораторная работа № 19. Полиномиальная регрессия
- •Лабораторная работа № 20. Логистическая регрессия
Лабораторная работа № 11. Классы. Свойства и наследие.
Цель работы: Научиться создавать сложные свойства у классов и наследовать другие классы.
1. Изменить класс из лабораторной работы № 10 таким образом, чтобы треугольник можно было изменить после создания (заменить точки), но при этом вводимые данные проверялись и при неправильном вводе выводилась ошибка.
Код создания ошибки:
raise ValueError('Текст ошибки') # Ошибка значения
raise TypeError('Текст ошибки') # Ошибка типа данных
2. Добавить функции сравнения треугольников (по площади)
3. Создать класс: неизменяемый треугольник на основе треугольника (наследие) так, чтобы нельзя было менять координаты вершин
4. Создать класс: прямоугольный треугольник на основе треугольника (наследие) с дополнительной проверкой, что один из углов прямой (проверку можно осуществить с помощью теоремы Пифагора).
Пример программы, использующей данные классы:
t = Triangle((1., 0.), (2., 4.), (0., 1.))
print(t.isosceles()) # False
print(t.A) # (1., 0.)
t.B = (0., 0.)
# t.B = [] # Эта строка выводит TypeError
print(t) # Треугольник (1.0, 0.0), (0.0, 0.0), (0.0, 1.0)
print(t.isosceles()) # True
t2= Triangle((2., 0.), (0., 0.), (0., 1.))
if t > t2:
print('Первый треугольник больше')
else:
print('Второй треугольник больше или равен') #Выполняется это условие
t2 = ImmutableTriangle((1., 0.), (2., 0.), (0., 1.))
# t2.A = (2., 0.) # Эта строка выводит AttributeError
t3 = RightTriangle((1., 0.), (0., 0.), (0., 1.))
# t4 = RightTriangle((1., 0.), (0.25, 0.25), (0., 1.)) # ValueError
t3.A = (2.,0.)
# t3.A = (2.,0.5) # Эта строка выводит ValueError (не прямоугольный)
Лабораторная работа № 12. Основные принципы Numpy
Цель работы: изучить принципы работы numpy
Исходные данные:
Даны числа N = 20, 40, ... 100, M = 10, 20, ... 50, s = 100i + j.
Дан набор массивов NxM элементов (массив из M массивов по N элементов): для каждого сочетания M и N свой массив - всего 25 массивов
import random
random.seed(s)
seqNM = [[random.random() for _ in range(M)] for _ in range(N)]
Задание:
1. Установить numpy
2. Перевести массивы в массивы numpy
Остальные задания делаются с помощью numpy
3. Найти минимум и максимум каждого массива
4. Для массива 20x10 элементов:
а: найти косинус каждого элемента массива
б: найти минимум каждого столбца массива
в: найти максимум каждой строки массива
г: найти сумму элементов в центральной части 2х2 элементов
д. заменить по часовой стрелке угловые элементы массива (левый-верхний в правый-верхний, ...)
5. Преобразовать форму массива 40x20 в 80x10 с теми же элементами и поэлементно умножить на соответствующие элементы массива 80x10.
6. Создать функцию, которая выводит 5х5 элементов левого-верхнего угла массива и использовать её для вывода результатов заданий 4-5
Сделать выводы.
Лабораторная работа № 13. Решение задач с numpy
Цель работы: Решение школьных математических задач с numpy
Дано число s = 100i + j.
import random
random.seed(s)
Дана задача:
Есть 100 лесорубов. Каждый из них рубит лес, при этом в день может вырубить random.randint(1,3) деревьев. Каждого из них нужно кормить в рабочее время. При этом он съедает random.randint(500, 1000)г еды в день. Кроме того, он выпивает random.randint(2,3)л воды в день. При этом у них разная выносливость и они могут работать random.randint(4,6) дней в неделю.
Вопрос. Сколько еды, воды надо на них заготовить в неделю, сколько деревьев они могут срубить за неделю.
Важно: Каждый параметр определять отдельно в порядке, в котором они указаны в задаче: сначала количество деревьев для каждого лесоруба, потом еду и т.д. (чтобы получить правильные значения)
Примечание: Задачу решать, создав матрицу лесорубов (100 лесорубов x4 параметра) в numpy и делая необходимые преобразования.
