2. Iteradors: Inserir zeros (2 punts)

Avís

Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements d’un iterador.

Al mòdul zeros (fitxer zeros.py), deseu la següent funció, que podeu implementar com un generador o bé utilitzant el mòdul itertools i les funcions predefinides de python:

zeros.insereix_zeros(it)
Paràmetres:

it – iterable sobre una seqüència S d’enters

Retorna:

iterador sobre la seqüència S modificada de manera que entre cada dos enters consecutius de S s’hi ha afegit un zero enmig si tenen un signe contrari, és a dir, si un era positiu i el següent negatiu o a la inversa.

Tipus de retorn:

iterador d’enters (int)

Per exemple:


>>> it1 = iter([1, -3, -5, -6, 2, 4, -8])
>>> it2 = insereix_zeros(it1)
>>> next(it2)
1
>>> next(it2)
0
>>> next(it2)
-3
>>> for a in it2:
...    print(a, end=',')
-5,-6,0,2,4,0,-8,

>>> for a in insereix_zeros([1, -2, 2, -2, 3, -3, 4, -4]):
...    print(a, end=',')
1,0,-2,0,2,0,-2,0,3,0,-3,0,4,0,-4,

Disposeu d’un joc de proves més complet en el fitxer tests-zeros.txt.