Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions lesson06/home_work/hw06_easy.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,128 @@
# Задача-1: Написать класс для фигуры-треугольника, заданного координатами трех точек.
# Определить методы, позволяющие вычислить: площадь, высоту и периметр фигуры.

import math


class Triangle:

def __init__(self, x1, y1, x2, y2, x3, y3):
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
self.x3 = x3
self.y3 = y3

@property
def __a(self):
return round(math.sqrt((self.x1 - self.x2) ** 2 + (self.y1 - self.y2) ** 2), 2)

@property
def __b(self):
return round(math.sqrt((self.x3 - self.x2) ** 2 + (self.y3 - self.y2) ** 2), 2)

@property
def __c(self):
return round(math.sqrt((self.x3 - self.x1) ** 2 + (self.y3 - self.y1) ** 2), 2)

def perimeter(self):
self.__p = round(self.__a + self.__b + self.__c, 2)
return self.__p

def area(self):
self.__s = round(math.sqrt((self.__p / 2) * ((self.__p / 2) - self.__a) * ((self.__p / 2) - self.__b) * ((self.__p / 2) - self.__c)), 2)
return self.__s

@property
def __height_a(self):
return round((2 * self.__s) / self.__a, 2)

@property
def __height_b(self):
return round((2 * self.__s) / self.__b, 2)

@property
def __height_c(self):
return round((2 * self.__s) / self.__c, 2)

def heights(self):
answer = input('Высоту перпендикулярную какой строне считать? (a/b/c)\n').lower()
if answer == 'a':
return self.__height_a
elif answer == 'b':
return self.__height_b
elif answer == 'c':
return self.__height_c


sample = Triangle(1, 1, 4, 4, 6, 2)

print(f'Периметр треугольника: {sample.perimeter()}')
print(f'Площадь треугольника: {sample.area()}')
print(f'Высота треугольника: {sample.heights()}')



# Задача-2: Написать Класс "Равнобочная трапеция", заданной координатами 4-х точек.
# Предусмотреть в классе методы:
# проверка, является ли фигура равнобочной трапецией;
# вычисления: длины сторон, периметр, площадь.

class IsoscelesTrapezium:

def __init__(self, x1, y1, x2, y2, x3, y3, x4, y4):
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
self.x3 = x3
self.y3 = y3
self.x4 = x4
self.y4 = y4

def trapezium_check(self):
self.__ac = round(math.sqrt((self.x1 - self.x3) ** 2 + (self.y1 - self.y3) ** 2), 2)
self.__bd = round(math.sqrt((self.x2 - self.x4) ** 2 + (self.y2 - self.y4) ** 2), 2)
if self.__ac == self.__bd:
print('Фигура является равнобедренной трапецией')
else:
print('Фигура не является равнобедренной трапецией')

@property
def __check(self):
if self.__ac == self.__bd:
return True
else:
return False

def sides(self):
if self.__check:
self.__a = round(math.sqrt((self.x1 - self.x2) ** 2 + (self.y1 - self.y2) ** 2), 2)
self.__b = round(math.sqrt((self.x2 - self.x3) ** 2 + (self.y2 - self.y3) ** 2), 2)
self.__c = round(math.sqrt((self.x3 - self.x4) ** 2 + (self.y3 - self.y4) ** 2), 2)
self.__d = round(math.sqrt((self.x4 - self.x1) ** 2 + (self.y4 - self.y1) ** 2), 2)
return self.__a, self.__b, self.__c, self.__d
else:
return 'Расчет производится только для равнобедренной трапеции'

def perimeter(self):
if self.__check:
self.__p = self.__a + self.__b + self.__c + self.__d
return self.__p
else:
return 'Расчет производится только для равнобедренной трапеции'

def area(self):
if self.__check:
self.__s = ((self.__a + self.__c) / 4) * math.sqrt(4 * (self.__b ** 2) - (self.__a - self.__c) ** 2)
return self.__s
else:
return 'Расчет производится только для равнобедренной трапеции'

sample = IsoscelesTrapezium(1, 1, 3, 5, 5, 5, 7, 1)

sample.trapezium_check()
print(sample.sides())
print(sample.perimeter())
print(sample.area())
99 changes: 99 additions & 0 deletions lesson06/home_work/hw06_normal.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,102 @@
# (Ученик --> Класс --> Учителя --> Предметы)
# 4. Узнать ФИО родителей указанного ученика
# 5. Получить список всех Учителей, преподающих в указанном классе


class Human:
def __init__(self, name, surname, patronymic):
self.name = name
self.surname = surname
self.patronymic = patronymic

def get_full_name(self):
return self.surname + ' ' + self.name + ' ' + self.patronymic


class Pupil(Human):
def __init__(self, name, surname, patronymic, father, mother, school_classes):
Human.__init__(self, name, surname, patronymic)
self.father = father
self.mother = mother
self.school_classes = school_classes

def get_full_name(self):
return self.surname + ' ' + self.name[0] + '.' + self.patronymic[0] + '.'


class Parent(Human):
def __init__(self, name, surname, patronymic, par_type):
Human.__init__(self, name, surname, patronymic)
self.par_type = par_type


class Teacher(Human):
def __init__(self, name, surname, patronymic, subject, school_classes):
Human.__init__(self, name, surname, patronymic)
self.subject = subject
self.school_classes = school_classes


class_rooms = ['10 А', '10 Б', '10 В']

parents = [Parent('Максим', 'Иванов', 'Иванович', 'Отец'),
Parent('Елена', 'Иванова', 'Ивановна', 'Мать'),
Parent('Евгений', 'Петров', 'Петрович', 'Отец'),
Parent('Евгения', 'Петрова', 'Петровна', 'Мать'),
Parent('Владимир', 'Сидоров', 'Михайлович', 'Отец'),
Parent('Людмила', 'Сидорова', 'Михайловна', 'Мать'),
Parent('Дмитрий', 'Козлов', 'Дмитриевич', 'Отец'),
Parent('Оксана', 'Козлова', 'Дмитриевна', 'Мать'),
Parent('Василий', 'Бобров', 'Васильевич', 'Отец'),
Parent('Василиса', 'Боброва', 'Васильевна', 'Мать'),
Parent('Александр', 'Снегирев', 'Александрович', 'Отец'),
Parent('Александра', 'Снегирева', 'Александровна', 'Мать'),
]

students = [Pupil('Леонид', 'Иванов', 'Максимович', parents[0], parents[1], class_rooms[0]),
Pupil('Геркулес', 'Петров', 'Евгеньевич', parents[2], parents[3], class_rooms[0]),
Pupil('Партокл', 'Сидоров', 'Владимирович', parents[4], parents[5], class_rooms[1]),
Pupil('Платон', 'Козлов', 'Дмитриевич', parents[6], parents[7], class_rooms[1]),
Pupil('Герон', 'Бобров', 'Васильевич', parents[8], parents[9], class_rooms[2]),
Pupil('Аид', 'Снегирев', 'Александрович', parents[10], parents[11], class_rooms[2]),
]

teachers = [Teacher('Апогей', 'Карасев', 'Ненастьевич', 'Математика', class_rooms),
Teacher('Людовиг', 'Австрийский', 'Демиургович', 'История', [class_rooms[0], class_rooms[2]]),
Teacher('Мерлин', 'Звездочетов', 'Игоревич', 'Алхимия', [class_rooms[1], class_rooms[2]]),
]


print('Список всех классов школы:')
for elem in class_rooms:
print(elem)

print('Список всех учеников в классе')
answer_class = input('Введите номер класса из списка всех классов школы:\n').upper()
if answer_class in class_rooms:
for elem in students:
if elem.school_classes == answer_class:
print(elem.get_full_name())
else:
print('Вы ввели неправильный номер класса')

print('Список всех предметов указанного ученика')
answer_pup = input('Введите фамилию и иницалы ученика:\n').title()
for pup in students:
if answer_pup == pup.get_full_name():
for teach in teachers:
if pup.school_classes in teach.school_classes:
print(teach.subject)

print('ФИО родителей указанного ученика')
answer_pup = input('Введите фамилию и иницалы ученика:\n').title()
for pup in students:
if answer_pup == pup.get_full_name():
print(f'{pup.father.par_type}: {pup.father.get_full_name()}')
print(f'{pup.mother.par_type}: {pup.mother.get_full_name()}')

print('Список всех учителей класса')
answer_class = input('Введите номер класса из списка всех классов школы:\n').upper()
for teach in teachers:
if answer_class in teach.school_classes:
print(teach.get_full_name())