un exercice me rend vraiment folle, le problème je ne sais pas comment m'y prendre pour le résoudre,je veux des conseils et plus d'explication svp.
le code est :
Code:
1
2
3
4
5
6
7 def pilote(fichier, dex) : flux = open(fichier, 'r') for n, ligne in enumerate(flux) : dex = indexe(dex, ligne.split(), n + 1) flux.close() prd(dex) return dex
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 def indexe(dex, mots, ligne) : for mot in mots : mot = nettoie(mot) if mot.lower() in stoplist : pass else : dex = ajoute(dex, mot, ligne) return dex def ajoute(dex, mot, ligne) : if mot in dex : if ligne in dex[mot] : pass else : dex[mot].append(ligne) else : dex[mot] = [ligne] return dex
Code:
1
2
3
4
5
6 ponctuation = '(,.")' def nettoie(mot) : if mot[-1] in ponctuation : mot = mot[:-1] if mot[0] in ponctuation : mot = mot[1:] return mot
Code:
1
2
3
4
5
6
7 def prd(d) : for c in sorted(d) : print '\t', c, ':', d[c] stoplist = 'ce de du en le la mais on ou par pas pour qui un une'.split()
Code:
1
2
3
4
5
6 flux = open('stop.list', 'w') flux.write('\n'.join(stoplist)) flux.close() flux = open('stop.list', 'r') stoplist = flux.read().split() flux.close()
le fichier qui s'appelle indexe-moi enregistrer sous gedit est :Code:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 pilote('indexe-moi', {}) alors : [8] attendue : [6] autrement : [7] avant : [6] avec : [8] avoir : [5] bien : [1, 5] bon : [9] bouts : [4] c'est : [1, 2, 3] certitude : [5] chaque : [4, 8] coder : [3] contexte : [8] dans : [6] dit : [7] expression : [4, 6] fonctionnement : [9] frustration : [3] garantit : [9] global : [9] grosse : [3] instruction : [7, 8] large : [7] mal : [2] marche : [2] petits : [4] plaisir : [1] plus : [6] programme : [1, 2, 7] progressivement : [4, 9] qu'elle : [5] retourne : [5] s'en : [6] servir : [6] solution : [3] testant : [4] teste : [8] tourne : [1] tout : [2] valeur : [5] voulu : [8] vraiment : [2] {'certitude': [5], 'progressivement': [4, 9], 'global': [9], 'grosse': [3], 'plaisir': [1], 'retourne': [5], 'coder': [3], 'avec': [8], 'alors': [8], "c'est": [1, 2, 3], 'attendue': [6], 'bien': [1, 5], 'chaque': [4, 8], 'valeur': [5], 'frustration': [3], "s'en": [6], 'autrement': [7], 'plus': [6], 'avoir': [5], 'testant': [4], 'tourne': [1], 'bouts': [4], 'vraiment': [2], 'petits': [4], 'teste': [8], 'garantit': [9], 'mal': [2], 'marche': [2], 'expression': [4, 6], 'instruction': [7, 8], 'dans': [6], 'solution': [3], 'large': [7], 'fonctionnement': [9], 'tout': [2], 'voulu': [8], 'bon': [9], 'dit': [7], 'avant': [6], 'servir': [6], "qu'elle": [5], 'contexte': [8], 'programme': [1, 2, 7]}
Code:
1
2
3
4
5
6
7
8
9
10 Un programme qui tourne bien, c'est un plaisir, mais un programme qui marche mal ou pas du tout, c'est vraiment une "grosse" frustration. La solution c'est de le coder par petits bouts, en testant progressivement chaque expression pour avoir la certitude qu'elle retourne bien la valeur attendue, avant de s'en servir dans une expression plus large, autrement dit une "instruction" du programme. On teste alors chaque instruction avec le contexte voulu, ce qui, progressivement, garantit le bon fonctionnement global.
et la question de l'exercice est :
la fonction prd() est très commode pour afficher les données, mais ce n'est pas comme ça qu'un typographe professionnel présenterait l'index d'un ouvrage " : le lecteur n'a que faire des “[]” " ;
modifier cette fonction pour que la liste de lignes soit présentée sous la forme " : programme : 1-2, 7 " ; quand il y a 2 numéros consécutifs ou plus, par exemple, 1, 2, 3, 5
, la liste est présentée sous la forme 1-3, 5 " : coder cette présentation
je sais que je dois donner au moins une proposition mais j'ai aucune,je suis bloqué :s
merci