2. Fum (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 es
poden fer servir llistes, tuples, diccionaris ni cap
altra estructura de dades per a desar els elements dels
iteradors.
Una persona fumadora vol analitzar quins dies de la setmana fuma més cigarretes i per això s’apunta el nombre de cigarretes que fuma cada dia.
En un fitxer anomenat fum.py deseu la funció especificada a
continuació.
- fum.fum(it, dset, llindar)¶
- Paràmetres:
it – un iterador sobre una seqüència d’enters (
int) indicant el nombre de cigarretes fumades cada dia. La seqüència comença en un dilluns, no hi falta cap dia i els dies estan ordenats cronològicamentdset – una llista amb els noms dels 7 dies de la setmana (
str), ordenada de'dilluns'a'diumenge'llindar – un nombre de cigarretes llindar
- Retorna:
un iterador sobre una seqüència de noms de dies de la setmana (
str) corresponent als dies de la setmana de la seqüència it en què aquesta persona ha fumat un nombre de cigarretes més gran o igual que llindar.
Exemples:
>>> lfum1 = iter([10, 8, 9, 6, 6, 9, 12, 12, 8, 8, 8, 8, 9, 10,
... 10, 7, 6, 7, 7, 8, 9])
>>> ldset = ['dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte', 'diumenge']
>>> it = fum(lfum1, ldset, 9)
>>> iter(it) == it
True
>>> list(it)
['dilluns', 'dimecres', 'dissabte', 'diumenge', 'dilluns', 'dissabte', 'diumenge', 'dilluns', 'diumenge']
Disposeu de més tests al fitxer test-fum.txt
Nota
Una possible solució al problema usa la funció
itertools.cycle() a més de les funcions estàndard de
Python.