21
Дек
2016

Как сделать, чтобы код продолжал выполняться?

Привет всем! Есть такое задание:

Вам дается последовательность целых чисел и вам нужно ее обработать и вывести на экран сумму первой пятерки чисел из этой последовательности, затем сумму второй пятерки, и т. д.

Но последовательность не дается вам сразу целиком. С течением времени к вам поступают её последовательные части. Например, сначала первые три элемента, потом следующие шесть, потом следующие два и т. д.

Реализуйте класс Buffer, который будет накапливать в себе элементы последовательности и выводить сумму пятерок последовательных элементов по мере их накопления.

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

Пример работы с классом

buf = Buffer()
buf.add(1, 2, 3)
buf.get_current_part() # вернуть [1, 2, 3]
buf.add(4, 5, 6) # print(15) – вывод суммы первой пятерки элементов
buf.get_current_part() # вернуть [6]
buf.add(7, 8, 9, 10) # print(40) – вывод суммы второй пятерки элементов
buf.get_current_part() # вернуть []
buf.add(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) # print(5), print(5) – вывод сумм третьей и четвертой пятерки
buf.get_current_part() # вернуть [1]

Подскажите, пожалуйста, как можно поправить, чтобы продолжил выполняться код после того, как список arr опустеет? На последней проверке, как в примере, arr очищается, в списке buff остаются пять единиц, но добавляться в arr не хотят. Если кто-то откликнется, заранее большое спасибо!

class Buffer:
    def __init__(self):
        self.arr = []
    buff = []
    def add(self, *a):
        self.a = a
        self.buff.extend(a)
        for i in self.buff:
            if len(self.arr) < 5:
                self.arr.append(i)
                continue            
        if len(self.arr) >= 5:
            print(sum(self.arr))
            del self.buff[0:5]
        self.arr.clear()
    def get_current_part(self):
        return self.buff

Источник: https://ru.stackoverflow.com/questions/605957/%D0%9A%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D1%87%D1%82%D0%BE%D0%B1%D1%8B-%D0%BA%D0%BE%D0%B4-%D0%BF%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B0%D0%BB-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D1%82%D1%8C%D1%81%D1%8F

Share

Тебе может это понравится...