Найти - Пользователи
Полная версия: немного ООП
Начало » Центр помощи » немного ООП
1
alex28746
Добрый день. Помогите пожалуйста с таким заданием:
Написать класс MyList который будут представлен в виде списка элементов типа Int. Класс должен иметь конструктор в котором устанавливаем максимальный размер списка и метод add_element(a) который после проверки, если данный элемент имеет тип INT, будет добавлять его в список. Если список уже имеет максимальное количество элементов, прежде чем добавить новый элемент, должен быть удален первый элемент в списке.
terabayt
не сказано что нужно делать если в класс передать список с количеством элементов больше чем максимальный размер!
я сделал что оно тогда будет обрезать
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)
alex28746
огромное спасибо terabayt ,столько раз уже выручал
alex28746
Не могли бы еще помочь расширить этот класс методами 1) lavg() который возвращает среднее значение элементов в списке 2) lsum() сумму элементов в списке 3) lmax() и lmin() которые возвращают максимальное и минимальное значение в списке и его индекс И если в списке находятся несколько элементов с таким же значением и они максимальные или минимальные, то нужно вывести все из них.
alex28746
должно выгляднть примерно так
Например:
метод lmin должен вернуть
(4, )
terabayt
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)))
alex28746
Из списка
[4, 6, 7 ,4, 12]
Вот
(4,  [0, 3] )
что должен был вернуть lmin
Должен еще быть возвращен его индекс в списке.
Почему-то в первый раз не удалось скопировать в комментарии целиком.
terabayt
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))
alex28746
странно что на форуме только с помощью пайтон кода удалось ввести список, без этого он почему-то удалял просто из сообщения этот список
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB