TP2 Ajout des docstring

This commit is contained in:
Geoffrey Frogeye 2015-02-09 19:47:21 +01:00
parent 97dafd39d4
commit 38f5b68db6

View file

@ -47,9 +47,6 @@ print(
question(3)
# TODO utf-8
# TODO en print
print(">>> s = 'la méthode split est parfois bien utile'")
s = 'la méthode split est parfois bien utile'
print(">>> s.split(' ')")
@ -112,7 +109,10 @@ question(4)
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 = ''
l = len(sequence)
for i in range(l):
@ -170,7 +170,10 @@ question(1)
def sort(chaine):
# TODO Docstring
"""
Trie les caractères de chaine par ordre de codage.
str str
"""
# TODO On peut pas faire plus court ?
t = list(chaine)
t.sort()
@ -416,7 +419,7 @@ section('Comparaison des deux méthodes')
question(1)
NB_TESTS = 30 # Mettre à 0 pour réduire l'attente
NB_TESTS = 30 # Mettre à 0 pour réduire l'attente
import time
@ -431,7 +434,8 @@ for t in range(NB_TESTS):
temps2 = time.time() - debut
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 \
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),
@ -443,10 +447,15 @@ question(1)
# TODO Texte explicatif du concept d'arbres
def liste_possibilites(arbre, precede):
# dict → list
# TODO Docstring
# {1: {3: None}, {4: None}, 2: None} ⇒ [[1, 3], [1, 4], 2]
"""
Renvoie la liste des possibilités à partir d'un arbre de possibilités.
dict, list list
>>> liste_possibilites(annagrammes_arbre(['mange', 'ton']), [])
[['mange', 'ton'], ['mange', 'ont'], ['mangé', 'ton'], ['mangé', 'ont']]
"""
possibilites = []
for branche in arbre:
if type(arbre[branche]) == dict:
@ -458,9 +467,13 @@ def liste_possibilites(arbre, precede):
def annagrammes_arbre(liste):
# TODO Docstring
# En supposant que (1, 3) et (2, 4) sont anagrammes
# [1, 2] ⇒ {1: {2: None, 4: None}, 3: {2: None, 4: None}}
"""
Renvoie l'arbre des anagrammes possibles à partir d'une liste de mots.
list dict
>>> annagrammes_arbre(['mange', 'ton'])
{'mange': {'ton': None, 'ont': None}, 'mangé': {'ton': None, 'ont': None}}
"""
anagrammesPremier = anagrammes(liste[0])
if len(liste) > 1: # Si il y a des anagrammes après
return dict((i, annagrammes_arbre(liste[1:])) for i in anagrammesPremier)
@ -469,7 +482,13 @@ def annagrammes_arbre(liste):
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()
arbre = annagrammes_arbre(mots)
liste = liste_possibilites(arbre, [])
@ -486,6 +505,10 @@ question(1)
def sauver_dico():
"""
Sauvegarde le dictionnaire des anagrammes dans un fichier.
"""
fichier = open(ANAGRAMMES_FICHIER, 'w')
for i in ANAGRAMMES:
fichier.write(i + ':' + ':'.join(ANAGRAMMES[i]) + '\n')
@ -503,6 +526,10 @@ question(3)
def charger_dico():
"""
Lit le dictionnaire des anagrammes depuis un fichier.
"""
ANAGRAMMES = dict()
fichier = open(ANAGRAMMES_FICHIER, 'r')
for ligne in fichier: