Ús de la classe Núvol de punts ============================== .. py:module:: nuvols Al fitxer :download:`nuvols.py ` disposeu de la classe :py:class:`NuvolPunts`, que permet de representar la temperatura de diversos punts de l'espai 3D en un instant de temps donat. La seva especificació és la següent: .. py:class:: NuvolPunts(temps, punts) .. rubric:: Atributs: .. py:attribute:: temps L'instant de temps corresponent a la mesura de temperatura en els punts del núvol (:py:class:`datetime`). És el mateix per tots els punts i està inicialitzat amb el valor del paràmetre `temps` (:py:class:`datetime`). Aquesta classe ha de suportar les **operacions** següents: +--------------------------+----------------------------------------------------+ | Operació | Resultat | +==========================+====================================================+ | ``n[idpunt]`` | Retorna la temperatura del punt d'identificador | | | `idpunt` del núvol `n`, o "Unknown" si `idpunt` no | | | correspon a cada punt del núvol. | +--------------------------+----------------------------------------------------+ | ``n[idpunt] = t`` | Assigna la temperatura `t` al punt d'identificador | | | `idpunt` del núvol `n`. Si no hi ha cap punt amb | | | l'identificador donat `idpunt`, l'afegeix al núvol.| +--------------------------+----------------------------------------------------+ La classe és iterable per identificadors de punts. El paràmetre `punts` és una llista de tuples `(idpunt, temp)` essent `idpunt` l'identificador d'un punt (:py:class:`str`) i `temp` la temperatura mesurada en aquest punt. #. Descarregueu el fitxer :download:`nuvols.py `. En un interpret de python, intenteu crear una instància de la classe. Consulteu i modifiqueu la temperatura en un punt. Proveu els doctests :download:`tests-nuvol.txt ` #. En el mòdul :py:mod:`usa_nuvol` (fitxer :file:`usa_nuvol.py`), implementeu la funció següent: .. py:module:: usa_nuvol .. function:: iter_calents(nuvol, temp) :param nuvol: una instància de la classe :py:class:`NuvolPunts`. :param temp: un valor de temperatura :py:class:`float`. :return: un iterador dels punts de `nuvol` que estan a un temperatura superior a `temp`. Vegeu per exemple: .. literalinclude:: tests-usa_nuvol.txt :language: python :start-after: --ini-enunciat :end-before: --fi-enunciat .. warning:: Per a resoldre aquest exercici **no es poden fer servir llistes**, tuples, diccionaris ni cap altra estructura de dades **per a desar els elements d'un iterador**. Tampoc es poden utilitzar **for** ni **while**. Disposeu de més tests al fitxer :download:`tests-usa_nuvol.txt ` i d'una solució :download:`usa_nuvol.py `