3. Aules [3p]¶
Avís
Per a resoldre aquest exercici no es poden fer servir iteracions (ni for ni while ), només les funcions predefinides de Python i les dels mòduls itertools, functools i operator. Tampoc no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar tots els elements dels iteradors.
Al mòdul aules (fitxer aules.py) hi ha definida la classe Aula:
- class aules.Aula(id, planta, tipus, capacitat)¶
Crea una instància de la classe que representa una aula amb l’identificador id , situada a la planta p, del tipus t
str) i amb capacitat per ns alumnes.
La gent de planificació de l’ETSEIB vol poder consultar quines aules hi ha d’un determinat tipus on caben un nombre determinat d’alumnes. Amb aquest fi es demana que al mòdul plan (fitxer plan.py) facis funció següent:
- plan.sel_aules(it, tps, na)¶
- Paràmetres:
- Retorna:
un iterador sobre una seqüència d’identificadors de les aules de l’iterador it que són del tipus tps i amb capacitat per encabir na alumnes, en el mateix ordre d” it.
Per exemple:
>>> it1 = iter([Aula('H5.1', 5, 'Info', 49), Aula('H5.3', 5, 'Info', 35), Aula('H5.4', 5, 'Info', 24), Aula('H8.1', 8, 'Info', 18)])
>>> it2 = sel_aules(it1, 'Info', 30)
>>> it2 == iter(it2)
True
>>> list(it2)
['H5.1', 'H5.3']
Tens a disposició un joc de proves més complet al fitxer tests-sel_aules.txt. Per a validar la teva solució cal baixar el fitxer aules.py (aules.py) però que NO s’ha de pujar a la tasca.