Уведомления

Группа в Telegram: @pythonsu

#1 Март 28, 2015 18:35:45

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

немного ООП

Добрый день. Помогите пожалуйста с таким заданием:
Написать класс MyList который будут представлен в виде списка элементов типа Int. Класс должен иметь конструктор в котором устанавливаем максимальный размер списка и метод add_element(a) который после проверки, если данный элемент имеет тип INT, будет добавлять его в список. Если список уже имеет максимальное количество элементов, прежде чем добавить новый элемент, должен быть удален первый элемент в списке.

Отредактировано alex28746 (Март 28, 2015 18:58:17)

Офлайн

#2 Март 28, 2015 19:18:29

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

немного ООП

не сказано что нужно делать если в класс передать список с количеством элементов больше чем максимальный размер!
я сделал что оно тогда будет обрезать

class MyList(list):
    def __init__(self, l):
        self.max = 10
        self.extend(l[:self.max])
    def add_element(self, element):
        if not isinstance(element, int):
            raise TypeError("add_element() argument must be a int")
        self.append(element)
        if len(self) > self.max:
            self.pop(0)



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Март 28, 2015 19:56:00

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

немного ООП

огромное спасибо terabayt ,столько раз уже выручал

Офлайн

#4 Март 28, 2015 20:45:31

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

немного ООП

Не могли бы еще помочь расширить этот класс методами 1) lavg() который возвращает среднее значение элементов в списке 2) lsum() сумму элементов в списке 3) lmax() и lmin() которые возвращают максимальное и минимальное значение в списке и его индекс И если в списке находятся несколько элементов с таким же значением и они максимальные или минимальные, то нужно вывести все из них.

Отредактировано alex28746 (Март 28, 2015 20:46:12)

Офлайн

#5 Март 28, 2015 20:46:44

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

немного ООП

должно выгляднть примерно так
Например:
метод lmin должен вернуть
(4, )

Офлайн

#6 Март 28, 2015 20:53:49

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

немного ООП

class MyList(list):
    def __init__(self, l):
        self.max = 10
        self.extend(l[:self.max])
    def add_element(self, element):
        if not isinstance(element, int):
            raise TypeError("add_element() argument must be a int")
        self.append(element)
        if len(self) > self.max:
            self.pop(0)
    def lavg(self):
        return sum(self)*1.0/len(self)
    def lsum(self):
        return sum(self)
    def lmax(self):
        return tuple([max(self)] * self.count(max(self)))
    def lmin(self):
        return tuple([min(self)] * self.count(min(self)))



————————————————
-*- Simple is better than complex -*-

Офлайн

#7 Март 28, 2015 21:11:22

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

немного ООП

Из списка

[4, 6, 7 ,4, 12]
Вот
(4,  [0, 3] )
что должен был вернуть lmin
Должен еще быть возвращен его индекс в списке.
Почему-то в первый раз не удалось скопировать в комментарии целиком.

Отредактировано alex28746 (Март 28, 2015 21:30:12)

Офлайн

#8 Март 28, 2015 21:30:17

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

немного ООП

alex28746
Должен еще быть возвращен его индекс в списке.
ой ) и читал же о этом, но когда писал код забыл))
class MyList(list):
    def __init__(self, l):
        self.max = 10
        self.extend(l[:self.max])
    def add_element(self, element):
        if not isinstance(element, int):
            raise TypeError("add_element() argument must be a int")
        self.append(element)
        if len(self) > self.max:
            self.pop(0)
    def lavg(self):
        return sum(self)*1.0/len(self)
    def lsum(self):
        return sum(self)
    def func(self, n):
        return (n, [i for i, j in enumerate(self) if j == n])
    def lmax(self):
        return self.func(max(self))
    def lmin(self):
        return self.func(min(self))



————————————————
-*- Simple is better than complex -*-

Офлайн

#9 Март 28, 2015 21:42:09

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

немного ООП

странно что на форуме только с помощью пайтон кода удалось ввести список, без этого он почему-то удалял просто из сообщения этот список

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version