Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
семестр 1 / Задания ИТиП.docx
Скачиваний:
0
Добавлен:
13.05.2026
Размер:
45.02 Кб
Скачать

Лабораторная работа № 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 и делая необходимые преобразования.

Соседние файлы в папке семестр 1