.. py:module:: artropode Artròpodes i aràcnids ===================== La classe `Artropode` --------------------- Els `artròpodes `__ són invertebrats dotats d'un esquelet extern, un cos dividit en segments i extremitats articulades anomenades apèndixs. Els artròpodes inclouen els insectes, els aràcnids, els crustacis i altres. Els segments del cos s'agrupen en `tagmes `__, com ara el cap, el tòrax i l'abdomen d'un insecte. En un mòdul anomenat :file:`artropode.py`, dissenyeu la classe :py:class:`Artropode` que permet de representar una espècie qualsevol d'artròpode. L’especificació d’aquesta classe és la següent: .. py:class:: Artropode(n_cientific, n_comu, n_tagmes) **Atributs públics**: .. py:attribute:: nom_cientific Nom científic de l'espècie (string) .. py:attribute:: nom_comu Nom comú de l'espècie (string) .. py:attribute:: nombre_tagmes Nombre de tagmes del cos (enter positiu) **Mètodes**: .. py:method:: num_apendixs() Retorna el nombre total d'apèndixs de l'artròpode. Aquesta classe ha de suportar les **operacions** següents: +--------------------------+----------------------------------------------------+ | Operació | Resultat | +==========================+====================================================+ | ``a[t]`` | Retorna el nombre d'apèndixs de tipus `t` (string) | | | de l'artròpode `a`; 0 si no en té d'aquest tipus. | +--------------------------+----------------------------------------------------+ | ``a[t] = n`` | Estableix que l'artròpode `a` té | | | `n` (enter) apèndixs de tipus `t` (string). | +--------------------------+----------------------------------------------------+ En dissenyar aquesta classe heu de tenir en compte que: #. Inicialment, quan es crea, un artròpode, no tindrà cap apèndix. #. A part dels atributs públics, en cal un de privat (trieu el nom que vulgueu), un diccionari per a emmagatzemar la informació del nombre d'apèndixs de cada tipus que té l'espècie animal. Les claus d'aquest diccionari són un string i els valors un enter. Per exemple el valor ``{'potes': 6, 'antenes': 2}`` es refereix a un animal amb sis potes i dues antenes. Un exemple d'ús de la classe: .. literalinclude:: test-artropodes.txt :language: python :lines: 3-18 Disposeu de jocs de proves al fitxer :download:`test-artropodes.txt `. La funció `max_apendixs` -------------------------- Al mateix mòdul :file:`artropode.py`, escriviu-hi la funció següent: .. py:function:: max_apendixs(a1, a2) Donades dues instàncies de la classe ``Artropode`` retorna el màxim nombre d'apèndixs que té un dels dos animals. Per exemple, .. literalinclude:: test-maxapendixs.txt :language: python :lines: 3-11 Tingueu en compte que aquesta funció ha de ser externa a la classe, no pas un mètode. Disposeu de jocs de proves al fitxer :download:`test-maxapendixs.txt `. La funció `tagmes_iguals` --------------------------- Al mateix mòdul :file:`artropode.py`, escriviu-hi la funció següent: .. py:function:: tagmes_iguals(lartr) Donada una llista (no buida) d'artròpodes, retorna bé el nombre de tagmes dels animals de la llista, en cas que coincideixi en tots ells, o bé -1 en cas contrari. Per exemple, .. literalinclude:: test-tagmesiguals.txt :language: python :lines: 3-9 Disposeu de jocs de proves al fitxer :download:`test-tagmesiguals.txt `. .. py:module:: aracnid La classe `Aracnid` ------------------- Els `aràcnids `__ són artròpodes entre els quals s'inclouen les aranyes i els escorpins, a més d'altres. Tenen el cos dividit en dos tagmes (cefalotòrax i abdomen) i tots tenen vuit potes. Es demana que, al mòdul :file:`aracnid.py`, hi dissenyeu la classe :py:class:`Aracnid` que es deriva per herència de la classe :py:class:`Artropode` [#sols]_ i que disposa dels mateixos atributs. No obstant, cal que redefiniu el mètode d'instanciació de nous objectes de la classe, `__init__`: Com que tots els aràcnids tenen dos tagmes i vuit potes, aquest mètode només ha de tenir els paràmetres del nom científic i nom comú, però no el nombre de tagmes, i ha de crear una instància amb l'atribut referent als apèndixs inicialitzat en conseqüència. Per exemple, .. literalinclude:: test-aracnids.txt :language: python :lines: 3-19 Disposeu de jocs de proves al fitxer :download:`test-aracnids.txt `. La funció `possibles_aracnids` ------------------------------ Afegiu al mòdul :file:`aracnid.py` la funció següent: .. py:function:: possibles_aracnids(lartr) Donada una llista d'artròpodes, en retorna una altra que conté només els elements de la llista original que poden ser aràcnids. Un artròpode és susceptible de ser aràcnid si té el cos dividit en dos tagmes, té vuit potes i no té ales ni antenes. Els elements de la llista retornada hi han d'aparèixer en el mateix ordre que en la llista original. Per exemple, .. literalinclude:: test-possiblesaracnids.txt :language: python :lines: 4- Disposeu de jocs de proves al fitxer :download:`test-possiblesaracnids.txt `. .. rubric:: Solucions .. [#sols] Disposeu de solucions als fitxers :download:`artropode.py ` i :download:`aracnid.py `.