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 artropode.py, dissenyeu la classe Artropode que permet de representar una espècie qualsevol d’artròpode. L’especificació d’aquesta classe és la següent:

class artropode.Artropode(n_cientific, n_comu, n_tagmes)

Atributs públics:

nom_cientific

Nom científic de l’espècie (string)

nom_comu

Nom comú de l’espècie (string)

nombre_tagmes

Nombre de tagmes del cos (enter positiu)

Mètodes:

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 an (enter) apèndixs de tipus t (string).

En dissenyar aquesta classe heu de tenir en compte que:

  1. Inicialment, quan es crea, un artròpode, no tindrà cap apèndix.

  2. 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:

>>> f = Artropode('Formica rufa', 'Formiga roja', 3)
>>> f.nom_cientific
'Formica rufa'
>>> f.nom_comu
'Formiga roja'
>>> f.nombre_tagmes
3
>>> f.num_apendixs()
0
>>> f['potes'] = 6
>>> f['antenes'] = 2
>>> f['mandibules'] = 2
>>> f.num_apendixs()
10
>>> f['mandibules'], f['antenes'], f['potes'], f['ales']
(2, 2, 6, 0)

Disposeu de jocs de proves al fitxer test-artropodes.txt.

La funció max_apendixs

Al mateix mòdul artropode.py, escriviu-hi la funció següent:

artropode.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,

>>> f = Artropode('Formica rufa', 'Formiga roja', 3)
>>> f['potes'] = 6
>>> f['antenes'] = 2
>>> f['mandibules'] = 2
>>> p = Artropode('Palinurus elephas', 'Llagosta vermella', 2)
>>> p['potes'] = 10
>>> p['antenes'] = 4
>>> max_apendixs(f, p)
14

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 test-maxapendixs.txt.

La funció tagmes_iguals

Al mateix mòdul artropode.py, escriviu-hi la funció següent:

artropode.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,

>>> f = Artropode('Formica rufa', 'Formiga roja', 3)
>>> e = Artropode('Leptinotarsa decemlineata', 'Escarabat de la patata', 3)
>>> p = Artropode('Palinurus elephas', 'Llagosta vermella', 2)
>>> tagmes_iguals([f, e])
3
>>> tagmes_iguals([f, e, p])
-1

Disposeu de jocs de proves al fitxer test-tagmesiguals.txt.

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 aracnid.py, hi dissenyeu la classe Aracnid que es deriva per herència de la classe Artropode [1] 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,

>>> a1 = Aracnid('Latrodectus tredecimguttatus', 'Viuda negra')
>>> a1.nom_cientific
'Latrodectus tredecimguttatus'
>>> a1.nom_comu
'Viuda negra'
>>> a1.nombre_tagmes
2
>>> a1.num_apendixs()
8
>>> a1['potes']
8
>>> a1['ullals'] = 2
>>> a1['pedipalps'] = 2
>>> a1['ullals'], a1['pedipalps'], a1['potes'], a1['ales']
(2, 2, 8, 0)
>>> a1.num_apendixs()
12

Disposeu de jocs de proves al fitxer test-aracnids.txt.

La funció possibles_aracnids

Afegiu al mòdul aracnid.py la funció següent:

aracnid.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,

>>> a1 = Aracnid('Latrodectus tredecimguttatus', 'Viuda negra')
>>> a1['ullals'] = 2
>>> a1['pedipalps'] = 2
>>> a2 = Aracnid('Belisarius xambeui', 'Escorpi cec')
>>> a2['pinces'] = 2
>>> a2['quelicers'] = 2
>>> a2['fiblons'] = 1
>>> a3 = Artropode('Drosophila melanogaster', 'Mosca del vinagre', 3)
>>> a3['ales'] = 2
>>> a3['potes'] = 6
>>> a4 = Artropode('Homarus gammarus', 'Llamantol', 2)
>>> a4['pinces'] = 2
>>> a4['potes'] = 8
>>> a4['antenes'] = 4
>>> possibles_aracnids([a1, a3, a2, a4]) == [a1, a2]
True

Disposeu de jocs de proves al fitxer test-possiblesaracnids.txt.

Solucions