# Iteratorji

s = [1, 2, 3, 'foo', 4]
for x in s:
    print ("Zdaj je x enak {0}".format(x))

for x in "Od nekdaj lepe so Ljubljanke slovele":
    print ("Zdaj je x enak {0}".format(x))

with open('besedilo.txt','r') as dat:
    for x in dat:
        print ("Zdaj je x enak {0}".format(x))

#v = 0
#x = 1
#while x < 100000000:
#    v = v + x
#    x = x + 1

v = 0
for i in xrange(1000000):
    v = v + i
print ("Vsota je {0}".format(v))

# Primer iteratorja, steje soda stevila od 2 do 100
class MojIterator():
    def __init__(self):
        self.prisliSmoDo = 0
        
    def __iter__(self):
        return self
        
    def next(self):
        self.prisliSmoDo += 2
        if self.prisliSmoDo <= 100:
            return self.prisliSmoDo
        else:
            raise StopIteration

mojI = MojIterator()
for x in mojI:
    print ("Zdaj je x enak {0}".format(x))

# Iterator, ki se cikla po danem seznamu
class Ciklaj():
        def __init__(self, seznam, kolikokrat):
            self.seznam = seznam
            self.i = 0 # indeks naslednjega v seznamu
            self.k = kolikokrat # kolikorat moramo se cez seznam
            
        def __iter__(self):
            return self
            
        def next(self):
            if self.k <= 0:
                raise StopIteration
            else:
                # Najprej si zapomnimo, element, ki ga je treba vrniti
                x = self.seznam[self.i]
                # Popravimo self.i
                self.i = self.i + 1
                if self.i >= len(self.seznam):
                    self.i = 0
                    self.k = self.k - 1
                return x

c = Ciklaj(['jabolko', 'banana', 'ananas', 'kamen'], 3)
for x in c:
    print ("Zdaj je x enak {0}".format(x)) 

















