>>> from dies import dies_setmana --ini-enunciat >>> 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)- --fi-enunciat >>> import itertools >>> dies = itertools.chain(range(1, 32), range(1, 31)) >>> it = dies_setmana(ndies, 2, dies) >>> next(it) ('dimecres', 1) >>> next(it) ('dijous', 2) >>> next(it) ('divendres', 3) >>> next(it) ('dissabte', 4) >>> next(it) ('diumenge', 5) >>> next(it) ('dilluns', 6) >>> it2 = itertools.islice(it, 23, 27) >>> for d in it2: ... print(d, end='-') ('dijous', 30)-('divendres', 31)-('dissabte', 1)-('diumenge', 2)- >>> for d in itertools.islice(it, 27, None): ... print(d, end='-') ('diumenge', 30)- Fem un calendari a partir de l'iterador. >>> from functools import reduce >>> import operator >>> n_set = {'dilluns': 0,'dimarts': 1,'dimecres': 2,'dijous': 3, ... 'divendres': 4,'dissabte':5 ,'diumenge': 6} >>> def calendari(it): ... def str_dia(dia): ... dset, dmes = dia ... return '{:2d} '.format(dmes) + ('\n' if dset == 'diumenge' else '') ... s = 'dl dt dc dj dv ds dd \n' ... dia = next(it) ... s += ' ' * n_set[dia[0]] + str_dia(dia) ... s += reduce(operator.add, map(str_dia, it)) ... return s >>> >>> dies = itertools.chain(range(7, 32), range(1, 31)) >>> it = dies_setmana(ndies, 1, dies) >>> print(calendari(it)) dl dt dc dj dv ds dd 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30