Paquets

Avís

Per a resoldre aquest exercici no es poden fer servir iteracions (ni for ni while ), només funcions recursives.

La classe Paquet representa els paquets que una empresa de missatgeria ha d’enviar. La classe Missatgeria és un contenidor de paquets. Les dues classes estan especificades a continuació i estan implementades al mòdul missatgeria (fitxer missatgeria.py).

class missatgeria.Paquet(codi, lliurat)

Atributs:

codi

str que representa el codi del paquet

lliurat

bool que indica si el paquet ha estat lliurat (True) o no (False) al destinatari.

La classe suporta la funció str().

class missatgeria.Missatgeria

Mètodes:

afegir(paquet)

Afegeix el paquet al final de la missatgeria

Operacions:

Operació

Resultat

m[i]

el i-èssim paquet de m

amb 0<=i<len(m)

La classe suporta les funcions len() i str().

En el mòdul paquets (fitxer paquets.py) dissenyeu la funció recursiva cerca_paquet(), que donat una instància a la classe missatgeria retorna el codi del primer paquet no lliurat. Si tots els paquets han estat lliurats, la funció ha de retornar ''.

Només heu de lliurar paquets.py, no missatgeria.py.

Per exemple:

>>> m = Missatgeria()
>>> m.afegir(Paquet('D451', True))
>>> len(m)
1
>>> str(m[0])
'Paquet: D451'
>>> m.afegir(Paquet('D872', True))
>>> str(m[1])
'Paquet: D872'
>>> m.afegir(Paquet('D703', True))
>>> m.afegir(Paquet('D414', False))
>>> m.afegir(Paquet('D625', True))
>>> m.afegir(Paquet('D266', False))
>>> from paquets import cerca_paquet
>>> cerca_paquet(m)
'D414'
>>> m[3].lliurat = True
>>> cerca_paquet(m)
'D266'
>>> m[5].lliurat = True
>>> cerca_paquet(m)
''

Disposeu dels jocs de prova al fitxer test-missatgeria.txt.

Nota

Disposeu d’una solució de l’exercici al fitxer paquets.py.