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] = nEstableix 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:
>>> 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
Artropoderetorna 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