Omplert de dades que falten =========================== .. py:module:: omplertdades 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 :file:`omplertdades.py` els generadors següents: #. Dissenyeu el generador següent: .. py:function:: 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 :term:`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: .. literalinclude:: omplertdades-llegir_dades.txt :language: pycon :lines: 6-7,11,14-21 Disposeu de més jocs de proves al fitxer :download:`omplertdades-llegir_dades.txt`. #. Escriviu el generador següent: .. py:function:: 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: .. literalinclude:: omplertdades-omple_missings.txt :language: pycon :lines: 3-6,9-17 Disposeu de més jocs de proves al fitxer :download:`omplertdades-omple_missings.txt`. #. Escriviu el generador següent: .. py:function:: 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: .. literalinclude:: omplertdades-omple_missings2.txt :language: pycon :lines: 3-6,9-15 Disposeu de més jocs de proves al fitxer :download:`omplertdades-omple_missings2.txt`. .. rubric:: Solució Disposeu d'una solució al fitxer :download:`omplertdades.py `.