2. Viatge (3 punts)¶
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.
Una viatgera molt exclusiva vol viatjar en un vagó de tren on hi càpiguen quatre persones assegudes i cap d’empeus. A partir d’un iterador d’instàncies de la classe Vago que ja coneixeu (vegeu Ús_de_la_classe_vago), dissenyeu una funció que retorni un iterador d’identificadors de vagons que cumpleixen la condició esmentada.
Així doncs, en un fitxer anomenat viatge.py deseu la funció especificada a continuació.
- viatge.seleccio(it)¶
- Paràmetres:
it – un iterador sobre una sequència de vagons (
Vago)- Retorna:
un iterador sobre una seqüència d’identificadors de vagons de l’iterador it que tinguin capacitat per 4 persones assegudes i cap d’empeus, en el mateix ordre que it.
Per exemple:
>>> it1 = list([Vago('AB45', 23, 10), Vago('CB25', 4, 10), Vago('XX22', 4, 0), Vago('XX56', 4, 0), Vago('XY45', 0, 4)])
>>> it2 = seleccio(it1)
>>> next(it2)
'XX22'
>>> next(it2)
'XX56'
>>> next(it2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
Per provar el vostre codi i passar els doctests, cal que descarregueu el fitxer vagons.py de l’enunciat de Ús_de_la_classe_Vago o directament d’aquí (vagons.py). Disposeu d’un joc de proves més complet al fitxer tests-seleccio.txt. No pugeu els fitxers vagons.py a la tasca, només viatge.py.