TP2 Ajout des docstring
This commit is contained in:
parent
97dafd39d4
commit
38f5b68db6
|
@ -47,9 +47,6 @@ print(
|
||||||
|
|
||||||
question(3)
|
question(3)
|
||||||
|
|
||||||
# TODO utf-8
|
|
||||||
# TODO en print
|
|
||||||
|
|
||||||
print(">>> s = 'la méthode split est parfois bien utile'")
|
print(">>> s = 'la méthode split est parfois bien utile'")
|
||||||
s = 'la méthode split est parfois bien utile'
|
s = 'la méthode split est parfois bien utile'
|
||||||
print(">>> s.split(' ')")
|
print(">>> s.split(' ')")
|
||||||
|
@ -112,7 +109,10 @@ question(4)
|
||||||
|
|
||||||
|
|
||||||
def join(chaine, sequence):
|
def join(chaine, sequence):
|
||||||
# TODO Docstring
|
"""
|
||||||
|
Retourne la concaténation des éléments de séquence en insérant chaine entre eux.
|
||||||
|
str, [str *] → str
|
||||||
|
"""
|
||||||
res = ''
|
res = ''
|
||||||
l = len(sequence)
|
l = len(sequence)
|
||||||
for i in range(l):
|
for i in range(l):
|
||||||
|
@ -170,7 +170,10 @@ question(1)
|
||||||
|
|
||||||
|
|
||||||
def sort(chaine):
|
def sort(chaine):
|
||||||
# TODO Docstring
|
"""
|
||||||
|
Trie les caractères de chaine par ordre de codage.
|
||||||
|
str → str
|
||||||
|
"""
|
||||||
# TODO On peut pas faire plus court ?
|
# TODO On peut pas faire plus court ?
|
||||||
t = list(chaine)
|
t = list(chaine)
|
||||||
t.sort()
|
t.sort()
|
||||||
|
@ -416,7 +419,7 @@ section('Comparaison des deux méthodes')
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
NB_TESTS = 30 # Mettre à 0 pour réduire l'attente
|
NB_TESTS = 30 # Mettre à 0 pour réduire l'attente
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
@ -431,7 +434,8 @@ for t in range(NB_TESTS):
|
||||||
temps2 = time.time() - debut
|
temps2 = time.time() - debut
|
||||||
|
|
||||||
print('La première méthode a duré %s secondes, et la deuxième %s secondes.' % (temps1, temps2),
|
print('La première méthode a duré %s secondes, et la deuxième %s secondes.' % (temps1, temps2),
|
||||||
'La deuxième méthode est %0.2f fois plus efficace que la première.' % (temps1 / temps2),
|
'La deuxième méthode est %0.2f fois plus efficace que la première.' % (
|
||||||
|
temps1 / temps2),
|
||||||
'En effet, la première vérifie %d combinaisons d\'anagrammes, alors que la deuxième ne \
|
'En effet, la première vérifie %d combinaisons d\'anagrammes, alors que la deuxième ne \
|
||||||
réalise qu\'un accès à un dictionnaire. Notons que la construction dudit dictionnaire a lui aussi \
|
réalise qu\'un accès à un dictionnaire. Notons que la construction dudit dictionnaire a lui aussi \
|
||||||
pris un certain temps, mais reste négligeable par rapport à la première méthode.' % len(LEXIQUE),
|
pris un certain temps, mais reste négligeable par rapport à la première méthode.' % len(LEXIQUE),
|
||||||
|
@ -443,10 +447,15 @@ question(1)
|
||||||
|
|
||||||
# TODO Texte explicatif du concept d'arbres
|
# TODO Texte explicatif du concept d'arbres
|
||||||
|
|
||||||
|
|
||||||
def liste_possibilites(arbre, precede):
|
def liste_possibilites(arbre, precede):
|
||||||
# dict → list
|
"""
|
||||||
# TODO Docstring
|
Renvoie la liste des possibilités à partir d'un arbre de possibilités.
|
||||||
# {1: {3: None}, {4: None}, 2: None} ⇒ [[1, 3], [1, 4], 2]
|
dict, list → list
|
||||||
|
|
||||||
|
>>> liste_possibilites(annagrammes_arbre(['mange', 'ton']), [])
|
||||||
|
[['mange', 'ton'], ['mange', 'ont'], ['mangé', 'ton'], ['mangé', 'ont']]
|
||||||
|
"""
|
||||||
possibilites = []
|
possibilites = []
|
||||||
for branche in arbre:
|
for branche in arbre:
|
||||||
if type(arbre[branche]) == dict:
|
if type(arbre[branche]) == dict:
|
||||||
|
@ -458,9 +467,13 @@ def liste_possibilites(arbre, precede):
|
||||||
|
|
||||||
|
|
||||||
def annagrammes_arbre(liste):
|
def annagrammes_arbre(liste):
|
||||||
# TODO Docstring
|
"""
|
||||||
# En supposant que (1, 3) et (2, 4) sont anagrammes
|
Renvoie l'arbre des anagrammes possibles à partir d'une liste de mots.
|
||||||
# [1, 2] ⇒ {1: {2: None, 4: None}, 3: {2: None, 4: None}}
|
list → dict
|
||||||
|
|
||||||
|
>>> annagrammes_arbre(['mange', 'ton'])
|
||||||
|
{'mange': {'ton': None, 'ont': None}, 'mangé': {'ton': None, 'ont': None}}
|
||||||
|
"""
|
||||||
anagrammesPremier = anagrammes(liste[0])
|
anagrammesPremier = anagrammes(liste[0])
|
||||||
if len(liste) > 1: # Si il y a des anagrammes après
|
if len(liste) > 1: # Si il y a des anagrammes après
|
||||||
return dict((i, annagrammes_arbre(liste[1:])) for i in anagrammesPremier)
|
return dict((i, annagrammes_arbre(liste[1:])) for i in anagrammesPremier)
|
||||||
|
@ -469,7 +482,13 @@ def annagrammes_arbre(liste):
|
||||||
|
|
||||||
|
|
||||||
def annagrammes_phrase(phrase):
|
def annagrammes_phrase(phrase):
|
||||||
# TODO Docstring
|
"""
|
||||||
|
Renvoie la liste des anagrammes possibles à partir d'une phrase.
|
||||||
|
str → str
|
||||||
|
|
||||||
|
>>> annagrammes_phrase('mange ton')
|
||||||
|
['mange ton', 'mange ont', 'mangé ton', 'mangé ont']
|
||||||
|
"""
|
||||||
mots = phrase.split()
|
mots = phrase.split()
|
||||||
arbre = annagrammes_arbre(mots)
|
arbre = annagrammes_arbre(mots)
|
||||||
liste = liste_possibilites(arbre, [])
|
liste = liste_possibilites(arbre, [])
|
||||||
|
@ -486,6 +505,10 @@ question(1)
|
||||||
|
|
||||||
|
|
||||||
def sauver_dico():
|
def sauver_dico():
|
||||||
|
"""
|
||||||
|
Sauvegarde le dictionnaire des anagrammes dans un fichier.
|
||||||
|
∅ → ∅
|
||||||
|
"""
|
||||||
fichier = open(ANAGRAMMES_FICHIER, 'w')
|
fichier = open(ANAGRAMMES_FICHIER, 'w')
|
||||||
for i in ANAGRAMMES:
|
for i in ANAGRAMMES:
|
||||||
fichier.write(i + ':' + ':'.join(ANAGRAMMES[i]) + '\n')
|
fichier.write(i + ':' + ':'.join(ANAGRAMMES[i]) + '\n')
|
||||||
|
@ -503,6 +526,10 @@ question(3)
|
||||||
|
|
||||||
|
|
||||||
def charger_dico():
|
def charger_dico():
|
||||||
|
"""
|
||||||
|
Lit le dictionnaire des anagrammes depuis un fichier.
|
||||||
|
∅ → ∅
|
||||||
|
"""
|
||||||
ANAGRAMMES = dict()
|
ANAGRAMMES = dict()
|
||||||
fichier = open(ANAGRAMMES_FICHIER, 'r')
|
fichier = open(ANAGRAMMES_FICHIER, 'r')
|
||||||
for ligne in fichier:
|
for ligne in fichier:
|
||||||
|
|
Reference in a new issue