2. Dies (4 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 d’un iterador.

Es demana que, en un fitxer anomenat dies.py deseu la funció especificada a continuació:

dies.dies_setmana(ndies, ndia, it)
Paràmetres:
  • ndies (list) – llista de amb els set noms dels dies de la setmans (strings). La posició 0 correspon al primer dia (dilluns).

  • ndia (int) – enter que indica que indica la posició del nom dins la llista ndies corresponent al primer element de it.

  • it – iterable d’enters entre 1 i 31, consecutius, corresponents a nombres de dies seguits.

Retorna:

iterador de tuples (nom del dia de setmana, nombre del dia) amb tants elemens com hi ha en it.

Per exemple,

>>> ndies= ['dilluns','dimarts','dimecres','dijous','divendres',
...         'dissabte','diumenge']
>>> dies = [27, 28, 29, 30, 1, 2, 3]
>>> it = dies_setmana(ndies, 3, dies)
>>> next(it)
('dijous', 27)
>>> next(it)
('divendres', 28)
>>> next(it)
('dissabte', 29)
>>> for dia in it:
...     print(dia, end='-')
('diumenge', 30)-('dilluns', 1)-('dimarts', 2)-('dimecres', 3)-

Per a resoldre aquest problema us pot resultar útil les funcions itertools.cycle() i itertools.dropwhile(), entre d’altres.

Disposeu d’un joc de proves més complet en el fitxer test-dies.txt `