Avís
Per a resoldre aquests exercicis no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura. Ara bé, podeu dissenyar les funcions demanades bé com a generadors, bé utilitzant les funcions predefinides de Python i les dels mòduls itertools, functools i operator.
1. sel_n_primers (5 punts)¶
Es demana que dissenyeu la funció especificada a continuació i la deseu en un fitxer anomenat sel_n_primers.py:
- sel_n_primers.sel_n_primers(n, prop, seq)¶
- Paràmetres:
n (int) – enter estrictament positiu
prop (function) – funció d’un sol paràmetre que retorna un booleà
seq (iterator) – iterador sobre una seqüència qualsevol
- Retorna:
iterador sobre els n primers elements de seq que compleixen la propietat prop
Dos exemples: El primer cerca els 10 primers nombres parells d’un iterador d’enters. El segon cerca paraules que acabin en s. Noteu que en aquest darrer exemple només s’obtenen 7 casos dels 10 demanats, perquè no n’hi ha més.
>>> it = sel_n_primers(10, lambda x: x % 2 == 0, iter(range(50)))
>>> for n in it:
... print(n, end='-')
0-2-4-6-8-10-12-14-16-18-
>>> next(it, 'final') # Comprovem que l'iterador s'ha exhaurit
'final'
>>> f = "considerem que les paraules més llargues són les que tenen més de 6 caràcters".split()
>>> it = sel_n_primers(10, lambda p: p[-1]=='s', iter(f))
>>> for n in it:
... print(n, end='-')
les-paraules-més-llargues-les-més-caràcters-
Disposeu d’un joc de proves més complet al fitxer test-sel_n_primers.txt