Omplert de dades que falten¶
Un aficionat a la meteorologia diàriament, a les 10 en punt, mesura la temperatura del poble on viu i enregistra la dada en un fitxer de text. No obstant, quan no ha pogut mesurar-la (sigui perquè no funcionen bé els instruments, sigui perquè aquell dia estava de vacances, etc), per indicar que manca una o més dades apunta un asterisc al fitxer. El fitxer doncs, consta d’una sèrie de dades numèriques amb asteriscs intercalats; en qualsevol cas, les anotacions sempre estan separades per espais en blanc i/o salts de línia. En cada línia no sempre hi ha el mateix nombre d’anotacions. Un exemple d’un fitxer d’anotacions podria ser aquest:
16.0 18.0 * 18.5
19.25 18.0 19.0 17.5 15.5 * * 13.0 * 12.0
* 14.0 17.5 16.0 * 14.0 10.0 * * * 13.0 * 17.0
Deseu en el fitxer omplertdades.py
els generadors següents:
Dissenyeu el generador següent:
- omplertdades.llegir_dades(f)¶
Genera un iterador d’anotacions, que poden ser bé nombres reals bé strings
'*'
, a partir de les anotacions contingudes en el fitxer f.f ha de ser un fitxer obert per lectura.
Per exemple, els cinc primers elements d’un fitxer f amb el contingut de l’exemple anterior es podrien obtenir com segueix:
>>> import omplertdades >>> it = omplertdades.llegir_dades(f) >>> for i in range(5): ... next(it) 16.0 18.0 '*' 18.5 19.25 >>> f.close()
Disposeu de més jocs de proves al fitxer
omplertdades-llegir_dades.txt
.Escriviu el generador següent:
- omplertdades.omple_missings(it)¶
Genera un iterador de nombres reals amb els nombres de l’iterador it i amb els asteriscs de it reemplaçats per la dada numèrica precedent.
El primer element de l’iterador it sempre és un nombre.
Per exemple:
>>> import omplertdades >>> it = iter([1.0, '*', '*', 2.0, 3.0, '*', 4.0]) >>> it2 = omplertdades.omple_missings(it) >>> for d in it2: ... print(d) 1.0 1.0 1.0 2.0 3.0 3.0 4.0
Disposeu de més jocs de proves al fitxer
omplertdades-omple_missings.txt
.Escriviu el generador següent:
- omplertdades.omple_missings2(it)¶
Genera un iterador de nombres reals amb els nombres de l’iterador it i amb els asteriscs de it reemplaçats per la mitjana entre les dades numèriques precedent i següent.
El primer i el darrer elements de l’iterador it sempre són un nombre.
Per exemple:
>>> import omplertdades >>> it = iter([1.0, 2.0, 3.0, '*', 4.0]) >>> it2 = omplertdades.omple_missings2(it) >>> for d in it2: ... print(d) 1.0 2.0 3.0 3.5 4.0
Disposeu de més jocs de proves al fitxer
omplertdades-omple_missings2.txt
.
Solució
Disposeu d’una solució al fitxer omplertdades.py
.