0 / 0 / 0
Регистрация: 22.11.2019
Сообщений: 40
1

Создание класса "Геометрическая фигура"

22.11.2019, 10:31. Показов 16658. Ответов 14

Студворк — интернет-сервис помощи студентам
помогите доделать программу, выводит ошибку.
Создайте класс Геометрическая фигура (динамические методы: вывод информации, площадь, периметр). Создать три производных от Геометрической фигуры класса: Прямоугольник (поля: стороны), Круг (поля: радиус, координаты центра), Треугольник (поля: стороны). Переопределить для производных классов методы вывод информации, площадь, периметр. Добавить в класс Круг метод вывода уравнения окружности, в класс Прямоугольник – метод масштабирования (обе стороны умножаются на одно и то же число). Продемонстрировать работу всех методов. Вот задание
Вот мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
class Fig:
    def __init__(self, s, p):
        self.s=s
        self.p=p
    def information_employee(self):
        print('S = {} '.format(self.s))
        print('P = {} '.format(self.p))
class Rectangle(Fig):
    def __init__(self, a, b, k):
        self.a=a
        self.b=b
        self.k=k
    def rectangle (self):
        print('a = {}'.format(self.a))
        print('b = {}'. format(self.b))
        print('S = {} '.format(self.s))
        print('P = {} '.format(self.p))
    def scale (self, k):
        return self.a*self.k or self.b*self.k
    
        
class Circle(Fig):
    def __init__(self, r, O):
        self.r=r
        self.O=O
    def circle (self):
        print('r = {}'.format(self.r))
        print('O = {}'.format(self.O))
        print('S = {} '.format(self.s))
        print('P = {} '.format(self.p))
class Triangle(Fig):
    def __init__(self, a, b, c):
        self.a=a
        self.b=b
        self.c=c
    def triangle (self):
        print('a = {}'.format(self.a))
        print('b = {}'.format(self.b))
        print('c = {}'.format(self.c))
        print('S = {} '.format(self.s))
        print('P = {} '.format(self.p))
 
 
a=Fig("0", "0")
b=Circle("2", "(1, -1)")
c=Rectangle("1", "1")
d=Triangle("3", "4", "5")
a.information_employee()
b.information_employee()
c.information_employee()
d.information_employee()
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2019, 10:31
Ответы с готовыми решениями:

Создание класса "Стек"
Добрый день! Задание заключается в том, чтобы создать класс "стек", стек может содержать не более K...

Создать родительский класс "Склад" и 3 подкласса ("принтеры"," сканеры", "ксероксы")
Начните работу над проектом «Склад оргтехники». Создайте класс, описывающий склад. А также класс...

Дан список станций желтой ветки московского метро: line = ["Третьяковская", "Марксистская", "Площадь Ильича", "Авиамотор
Дан список станций желтой ветки московского метро: line = Считайте, что движение происходит от...

Написать программу проверки правильности написания сочетаний "жи", "ши", "ча", "ща"
Помогите пожалуйста написать программу проверки правильности написания сочетаний "жи", "ши", "ча",...

14
954 / 340 / 113
Регистрация: 04.08.2018
Сообщений: 2,534
22.11.2019, 10:34 2
002910, поиск по форуму, я перерешал 100500 этих ваших задач на классы.
0
0 / 0 / 0
Регистрация: 22.11.2019
Сообщений: 40
22.11.2019, 10:38  [ТС] 3
нашла только в C++, по питону нету
0
954 / 340 / 113
Регистрация: 04.08.2018
Сообщений: 2,534
22.11.2019, 10:42 4
002910, Программа, в которой описана иерархия классов
0
0 / 0 / 0
Регистрация: 22.11.2019
Сообщений: 40
22.11.2019, 10:49  [ТС] 5
видела эту программу, но это совершенно не то, что надо мне
0
954 / 340 / 113
Регистрация: 04.08.2018
Сообщений: 2,534
22.11.2019, 10:51 6
002910, аналогичным способом. Добавить пару методов и всё.

Добавлено через 24 секунды
002910, возьмите свой код в теги. Прочитать его нереально.
0
0 / 0 / 0
Регистрация: 22.11.2019
Сообщений: 40
22.11.2019, 11:03  [ТС] 7
ну не сказала бы, что аналогично все
0
954 / 340 / 113
Регистрация: 04.08.2018
Сообщений: 2,534
22.11.2019, 11:39 8
002910, какую ошибку и где выдаёт?
0
0 / 0 / 0
Регистрация: 22.11.2019
Сообщений: 40
22.11.2019, 11:41  [ТС] 9
TypeError: __init__() missing 1 required positional argument: 'k'
0
954 / 340 / 113
Регистрация: 04.08.2018
Сообщений: 2,534
22.11.2019, 11:44 10
002910, данная ошибка говорит, что один из параметров не задан, либо задан не верно.
0
Просто Лис
Эксперт Python
5250 / 3271 / 1009
Регистрация: 17.05.2012
Сообщений: 9,607
Записей в блоге: 9
22.11.2019, 11:44 11
c=Rectangle("1", "1") - здесь должно быть три аргумента
0
0 / 0 / 0
Регистрация: 22.11.2019
Сообщений: 40
22.11.2019, 11:47  [ТС] 12
AttributeError: 'Circle' object has no attribute 's'
вот следующая
а зачем там 3 аргумент, если к- это масштабирование моей фигуры, этот аргумент не постоянный
0
954 / 340 / 113
Регистрация: 04.08.2018
Сообщений: 2,534
22.11.2019, 11:54 13
002910, потому что ключевое слово в вашем задании, это создание динамических методов.
Цитата Сообщение от 002910 Посмотреть сообщение
а зачем там 3 аргумент, если к- это масштабирование моей фигуры, этот аргумент не постоянный
А зачем вы создали метод который хранит 3 параметра? Вот он и просит 3-й.
0
0 / 0 / 0
Регистрация: 22.11.2019
Сообщений: 40
22.11.2019, 11:57  [ТС] 14
исправила, теперь вышла другая ошибка, и еще вопрос, куда добавлять формулы?
0
1728 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
22.11.2019, 19:08 15
002910, Это задание на тему "Абстрактные классы" и не ее подраздел "Делегирование".

Добавлено через 4 минуты
Это когда основной метод "Вычисление площади фигуры" находится в суперклассе, а конкретное вычисление площади, например "круга", размещается в подклассе.

Добавлено через 2 минуты
В принципе у Вас так и сделано. Нужно просто разобраться с частностями.

Добавлено через 6 минут
Цитата Сообщение от 002910 Посмотреть сообщение
еще вопрос, куда добавлять формулы?
Формулы должны быть в методах подклассов, которые вызываются из метода класса Fig.

Добавлено через 7 минут
002910, Что то я сходу не вижу, где у вас идет делегирование к методу подкласса.
Например, если у Вас self экземпляр прямоугольника,
Python
1
print('S = {} '.format(self.s))
то в подклассе Rectangle должен быть метод s. Я его там не вижу.

Добавлено через 2 часа 2 минуты
А вообще то метод s должен быть во всех подклассах, как метод расчета площади для конкретной фигуры. Вот в этих методах и должны размещаться формулы расчета площади, соответственно для каждой конкретной фигуры. Если у Вас расчета площади для какой то фигуры нет, то Вы вместо расчета вставляете в этот метод пользовательское исключение.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2019, 19:08
Помогаю со студенческими работами здесь

Regex для примерно следующих вариантов: "45345", "1234.", "323233.1"
Помогите плиз c regex для примерного следующих вариантов: "45345", "1234..", "323233.1". Т.е....

Описать инициализатор для класса "Точка"
Создать класс точка с полями: абсцисса и ордината. Описать инициализатор для точки таким образом,...

Поиск "предка" класса
Есть два списка длиной k: spK содержит названия классов. spP содержит списки с названиями...

Создание приложения "Словарь". Работа с файлами
Составьте два списка слов, например, на русском и английском языках. Каждый список сохраните с...

Создание карточки для игра "Лото"
Здравствуйте. Ниже представлена составная часть программы с говорящим названием Лото. Эта часть...

Создание символьного рисунка - "змейки"
Задача: Вывести на экран змейку из символов "*", высотой в 3 символа. Длину змейки ввести с...

Создание "Singleton" так, чтобы при повторной инициализации нельзя было измениять атрибуты объекта
Всем привет, для одной задачи потребовался singleton, но такой, чтобы не просто второго объекта не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru