воскресенье, 19 мая 2019 г.

Стрелки вперёд\назад



Надо было реализовать виджет, где стрелки ходят по списку вепрёд\назад, выдавая текущее значение (картинку) в спец. окошко. Убил на этот вопрос не менее 5 часов чистого времени, в итоге так и не справился. Но вот решение, подсказали

class Simpleiterator:
    def __init__(self,somelist):
        self.list = somelist
        self.ind = 0
        self.length = len(somelist)
    def forward(self):
        self.ind +=1
        self.ind = self.ind % self.length
        return self.list[self.ind]
    def back(self):
        self.ind -=1
        self.ind = self.ind % self.length
        return self.list[self.ind]

   
a = Simpleiterator(['q', 'w', 'e', 'r', 't'])



Моя ошибка в том, что очень переусложнил - написал 2 итератора для каждой стрелки, пытался сделать список, разбитый по текущему значению, и ещё несколько ненужных действий. В итоге было всё ок кроме главного - оба итератора не листали слаженно, т.е каждый запоминал только своё состояние.

А всё оказалось настолько просто.
Причём закольцованный проход по списку я точно делал, и 'остаток от деления на длину списка' использовал, эх...