Ús del mòdul fractions ---------------------- En programació, la manera més habitual de representar els `nombres racionals `_ és mitjançant la representació en `coma flotant `_ (*float*), que té l'inconvenient que només pot representar aquests nombres de forma aproximada `[1] `__. No obstant, en Python hi ha una representació alternativa, utilitzant el :py:mod:`mòdul fractions `. #. Estudieu la :py:class:`classe Fraction del mòdul fractions ` i proveu-la en l'intèrpret de Python, per tal de crear nombres racionals i consultar-ne el numerador i el denominador. A part de la documentació del mòdul, podeu consultar `aquesta pàgina `_. #. Al fitxer :file:`fracs.py`, dissenyeu-hi la funció ``fraccio_reciproca`` que, donat un nombre racional (una instància de la classe ``Fraction``), retorna la seva `fracció recíproca `_. Per exemple, .. literalinclude:: test-frac.txt :language: pycon :start-after: TESTS fraccio_reciproca :end-before: TESTS fraccio_mixta #. Al fitxer :file:`fracs.py`, dissenyeu-hi la funció ``fraccio_mixta`` que, donat un nombre racional positiu (una instància de la classe ``Fraction``), retorna la seva `representació mixta `_ com una tupla de dues components: un nombre enter (positiu) i una fracció (una ``Fraction``) irreductible no negativa menor que 1. Per exemple, .. literalinclude:: test-frac.txt :language: pycon :start-after: TESTS fraccio_mixta :end-before: TESTS millor_aprox #. Al mateix fitxer :file:`fracs.py`, dissenyeu la funció ``millor_aprox`` que, donat un *float* ``x`` i una llista (no buida) de nombres racionals, retorna el nombre racional de la llista més proper a ``x``, és a dir, aquell nombre de la llista que aproxima de forma més exacta el valor ``x``: .. literalinclude:: test-frac.txt :language: pycon :start-after: TESTS millor_aprox :end-before: TESTS fr_positives #. Al mateix fitxer :file:`fracs.py`, dissenyeu la funció ``fr_positives`` que, donat un iterable de fraccions (instàncies a la classe :py:class:`Fraction`) retorna un iterador sobre la subseqüència de fraccions donades que són positives. A l'iterador retornat, les fraccions han d'estar representades com una fracció mixta. Es recomana que s'usi la funció anterior ``fraccio_mixta``. Exemples: .. literalinclude:: test-frac.txt :language: pycon :start-after: TESTS fr_positives :end-before: TESTS seq_fraccions .. warning:: Per a resoldre aquest apartat **no es poden fer servir llistes**, tuples, diccionaris ni cap altra estructura de dades **per a desar els elements d'un iterador**. #. Al mateix fitxer :file:`fracs.py`, dissenyeu la funció ``seq_fraccions`` que, donat un enter, ``n`` (:class:`int`), retorna un iterador sobre la seqüència de fraccions (instàncies a la classe :py:class:`Fraction`) que tenen ``n`` com a denominador i com a numerador un valor positiu inferior a ``n``, en ordre ascendent. Exemple: .. literalinclude:: test-frac.txt :language: pycon :start-after: TESTS seq_fraccions .. warning:: Per a resoldre aquest apartat **no es poden fer servir llistes**, tuples, diccionaris ni cap altra estructura de dades **per a desar els elements d'un iterador**. .. note:: Disposeu de jocs de proves al fitxer :download:`test-frac.txt` i d'una solució al fitxer :download:`fracs.py `.