1. Aigua (5 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 els elements dels iteradors.
Per analitzar la qualitat de l’aigua de rius i embassaments, es mesura, entre altres propietats, la conductivitat elèctrica de l’aigua. Es considera que quan aquesta conductivitat és superior o igual a 1000 microsiemens per centímetre, l’aigua està molt mineralitzada, el que pot ser un indici d’abocament. Un episodi d’alta mineralització està format per seqüencies d’una o més mesures consecutives amb valors superiors o iguals a 1000.
Un laboratori vol analitzar els episodis d’alta mineralització en un punt concret de la xarxa. Per això, a partir d’una sèrie temporal de conductivitats es vol generar una nova sèrie de dades formada pel nombre de mesures de cada episodi d’alta mineralització. Per exemple, en la seqüència següent:
200 300 300 850 1056 1040 1067 900 500 200 1000 1200 950 1000 980 1050 1000
hi ha quatre episodis d’alta mineralització que s’han indicat en vermell. Per aquesta seqüència es vol crear la seqüència: 3 2 1 2, que correspon al nombre de mesures de cada episodi.
En un fitxer anomenat aigua.py deseu la funció generadora especificada a continuació.
- aigua.episodis(it_conduc)¶
- Paràmetres:
it_conduc – un iterador de mesures de conductivitat (
int) en microsiemens/cm.- Retorna:
un iterador del nombre de mesures en cadascun dels episodis d’alta mineralització de la seqüència de it_conduc.
Per exemple:
>>> it1 = iter([200, 300, 300, 850, 1056, 1040, 1067, 900, 500, 200, 1000, 1200, 950, 1000, 980, 1050, 1000])
>>> it2 = episodis(it1)
>>> next(it2)
3
>>> next(it2)
2
>>> next(it2)
1
>>> next(it2)
2
>>> next(it2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
Disposeu de mes proves en el fitxer tests-episodis.txt