TP2 Changé lignage
This commit is contained in:
parent
38f5b68db6
commit
9f0f11f28f
|
@ -21,10 +21,10 @@ def question(numero):
|
||||||
|
|
||||||
partie('Quelques méthodes sur les listes et les chaînes') # Geoffrey
|
partie('Quelques méthodes sur les listes et les chaînes') # Geoffrey
|
||||||
|
|
||||||
|
|
||||||
section('Méthode split')
|
section('Méthode split')
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
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 (' ')")
|
||||||
|
@ -41,12 +41,10 @@ print(">>> s.split ('split')")
|
||||||
print(s.split('split'))
|
print(s.split('split'))
|
||||||
|
|
||||||
question(2)
|
question(2)
|
||||||
|
|
||||||
print(
|
print(
|
||||||
'La méthode `split` renvoie la liste des chaînes de la découpe de la chaîne sur laquelle est appliquée la fonction par la chaîne passée en argument (ou à défaut le caractères d\'espacement')
|
'La méthode `split` renvoie la liste des chaînes de la découpe de la chaîne sur laquelle est appliquée la fonction par la chaîne passée en argument (ou à défaut le caractères d\'espacement')
|
||||||
|
|
||||||
question(3)
|
question(3)
|
||||||
|
|
||||||
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(' ')")
|
||||||
|
@ -61,7 +59,6 @@ print(
|
||||||
section('Méthode join')
|
section('Méthode join')
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
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('>>> l = s.split()')
|
print('>>> l = s.split()')
|
||||||
|
@ -88,12 +85,10 @@ print('>>> "".join ([1,2])')
|
||||||
print('TypeError: sequence item 0: expected str instance, int found')
|
print('TypeError: sequence item 0: expected str instance, int found')
|
||||||
|
|
||||||
question(2)
|
question(2)
|
||||||
|
|
||||||
print(
|
print(
|
||||||
'La méthode join concatène les chaînes de caractères contenues dans la liste passée en paramètre, en insérant entre deux la chaîne de caractère sur laquelle elle est appliquée.')
|
'La méthode join concatène les chaînes de caractères contenues dans la liste passée en paramètre, en insérant entre deux la chaîne de caractère sur laquelle elle est appliquée.')
|
||||||
|
|
||||||
question(3)
|
question(3)
|
||||||
|
|
||||||
print('>>> chaine = \'!\'')
|
print('>>> chaine = \'!\'')
|
||||||
chaine = '!'
|
chaine = '!'
|
||||||
print('>>> chaine.join(l)')
|
print('>>> chaine.join(l)')
|
||||||
|
@ -106,8 +101,6 @@ print(
|
||||||
'De par cet exemple, on remarque que chaine reste la même chaîne de caractères, `join` ne modifie donc pas la chaîne de caractères à laquelle elle s\'applique (ce qui est logique vu le caractère non-mutable des chaînes de caractères')
|
'De par cet exemple, on remarque que chaine reste la même chaîne de caractères, `join` ne modifie donc pas la chaîne de caractères à laquelle elle s\'applique (ce qui est logique vu le caractère non-mutable des chaînes de caractères')
|
||||||
|
|
||||||
question(4)
|
question(4)
|
||||||
|
|
||||||
|
|
||||||
def join(chaine, sequence):
|
def join(chaine, sequence):
|
||||||
"""
|
"""
|
||||||
Retourne la concaténation des éléments de séquence en insérant chaine entre eux.
|
Retourne la concaténation des éléments de séquence en insérant chaine entre eux.
|
||||||
|
@ -124,10 +117,10 @@ def join(chaine, sequence):
|
||||||
print(">>> join('.', ['raymond', 'calbuth', 'ronchin', 'fr'])")
|
print(">>> join('.', ['raymond', 'calbuth', 'ronchin', 'fr'])")
|
||||||
print(join('.', ['raymond', 'calbuth', 'ronchin', 'fr']))
|
print(join('.', ['raymond', 'calbuth', 'ronchin', 'fr']))
|
||||||
|
|
||||||
|
|
||||||
section('Méthode sort')
|
section('Méthode sort')
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
print('>>> l = list (\'timoleon\')')
|
print('>>> l = list (\'timoleon\')')
|
||||||
l = list('timoleon')
|
l = list('timoleon')
|
||||||
print('>>> l.sort()')
|
print('>>> l.sort()')
|
||||||
|
@ -153,7 +146,6 @@ print(
|
||||||
'Il semblerait que la méthode sort trie les caractères de s selon l\'ordre croissant de leur numéro de code ASCII (ou tout encodage utilisé)')
|
'Il semblerait que la méthode sort trie les caractères de s selon l\'ordre croissant de leur numéro de code ASCII (ou tout encodage utilisé)')
|
||||||
|
|
||||||
question(2)
|
question(2)
|
||||||
|
|
||||||
print('>>> l = [\'a\', 1]')
|
print('>>> l = [\'a\', 1]')
|
||||||
print('>>> l.sort()')
|
print('>>> l.sort()')
|
||||||
print('TypeError: unorderable types: int() < str()')
|
print('TypeError: unorderable types: int() < str()')
|
||||||
|
@ -167,8 +159,6 @@ print(
|
||||||
section('Une fonction sort pour les chaînes')
|
section('Une fonction sort pour les chaînes')
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
|
|
||||||
def sort(chaine):
|
def sort(chaine):
|
||||||
"""
|
"""
|
||||||
Trie les caractères de chaine par ordre de codage.
|
Trie les caractères de chaine par ordre de codage.
|
||||||
|
@ -186,8 +176,6 @@ print(sort('timoleon'))
|
||||||
partie('Anagrammes') # Jean-loup
|
partie('Anagrammes') # Jean-loup
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
|
|
||||||
def sont_anagrammes1(chaine1, chaine2):
|
def sont_anagrammes1(chaine1, chaine2):
|
||||||
"""
|
"""
|
||||||
Indique si chaine1 et chaine2 sont anagrammes
|
Indique si chaine1 et chaine2 sont anagrammes
|
||||||
|
@ -208,8 +196,6 @@ def sont_anagrammes1(chaine1, chaine2):
|
||||||
return c1 == c2
|
return c1 == c2
|
||||||
|
|
||||||
question(2)
|
question(2)
|
||||||
|
|
||||||
|
|
||||||
def sont_anagrammes2(chaine1, chaine2):
|
def sont_anagrammes2(chaine1, chaine2):
|
||||||
"""
|
"""
|
||||||
Indique si chaine1 et chaine2 sont anagrammes
|
Indique si chaine1 et chaine2 sont anagrammes
|
||||||
|
@ -230,8 +216,6 @@ def sont_anagrammes2(chaine1, chaine2):
|
||||||
return occu1 == occu2
|
return occu1 == occu2
|
||||||
|
|
||||||
question(3)
|
question(3)
|
||||||
|
|
||||||
|
|
||||||
def sont_anagrammes3(chaine1, chaine2):
|
def sont_anagrammes3(chaine1, chaine2):
|
||||||
"""
|
"""
|
||||||
Indique si chaine1 et chaine2 sont anagrammes
|
Indique si chaine1 et chaine2 sont anagrammes
|
||||||
|
@ -256,13 +240,10 @@ def sont_anagrammes3(chaine1, chaine2):
|
||||||
section('Casse et accentuation')
|
section('Casse et accentuation')
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
EQUIV_NON_ACCENTUE = {'é': 'e', 'è': 'e', 'à': 'a', 'ç': 'c', 'î': 'i', 'ï':
|
EQUIV_NON_ACCENTUE = {'é': 'e', 'è': 'e', 'à': 'a', 'ç': 'c', 'î': 'i', 'ï':
|
||||||
'i', 'ô': 'o', 'ê': 'e', 'ë': 'e', 'â': 'a', 'û': 'u', 'ü': 'u', 'ù': 'u'}
|
'i', 'ô': 'o', 'ê': 'e', 'ë': 'e', 'â': 'a', 'û': 'u', 'ü': 'u', 'ù': 'u'}
|
||||||
|
|
||||||
question(2)
|
question(2)
|
||||||
|
|
||||||
|
|
||||||
def bas_casse_sans_accent(chaine):
|
def bas_casse_sans_accent(chaine):
|
||||||
"""
|
"""
|
||||||
Renvoie l'équivalent minuscule non accentuée de la chaîne passée en paramètre
|
Renvoie l'équivalent minuscule non accentuée de la chaîne passée en paramètre
|
||||||
|
@ -284,8 +265,6 @@ def bas_casse_sans_accent(chaine):
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
question(3)
|
question(3)
|
||||||
|
|
||||||
|
|
||||||
def sont_anagrammes_sans_casse_ni_accent(chaine1, chaine2):
|
def sont_anagrammes_sans_casse_ni_accent(chaine1, chaine2):
|
||||||
"""
|
"""
|
||||||
Indique si chaine1 et chaine2 sont anagrammes sans de tenir compte de la casse ni des accents
|
Indique si chaine1 et chaine2 sont anagrammes sans de tenir compte de la casse ni des accents
|
||||||
|
@ -315,25 +294,21 @@ section('Le lexique')
|
||||||
# TODO Question 1 ?
|
# TODO Question 1 ?
|
||||||
|
|
||||||
question(2)
|
question(2)
|
||||||
|
|
||||||
from lexique import *
|
from lexique import *
|
||||||
|
|
||||||
question(3)
|
question(3)
|
||||||
|
|
||||||
print('Il y a %d mots dans le lexique' % len(LEXIQUE))
|
print('Il y a %d mots dans le lexique' % len(LEXIQUE))
|
||||||
|
|
||||||
question(4)
|
question(4)
|
||||||
|
|
||||||
test = len(LEXIQUE) == len(set(LEXIQUE))
|
test = len(LEXIQUE) == len(set(LEXIQUE))
|
||||||
# Bien que l'on ai vu en cours que cette méthode n'est pas la plus économique en mémoire, c'est
|
# Bien que l'on ai vu en cours que cette méthode n'est pas la plus économique en mémoire, c'est
|
||||||
# bizarrement la plus rapide
|
# bizarrement la plus rapide
|
||||||
print('Le test a retourné %s.' % test)
|
print('Le test a retourné %s.' % test)
|
||||||
|
|
||||||
|
|
||||||
section('Anagrammes d\'un mot : première méthode')
|
section('Anagrammes d\'un mot : première méthode')
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
|
|
||||||
def anagrammes(mot):
|
def anagrammes(mot):
|
||||||
"""
|
"""
|
||||||
Recherche les anagrammes de mot
|
Recherche les anagrammes de mot
|
||||||
|
@ -346,21 +321,18 @@ def anagrammes(mot):
|
||||||
return [i for i in LEXIQUE if sont_anagrammes_sans_casse_ni_accent(i, mot)]
|
return [i for i in LEXIQUE if sont_anagrammes_sans_casse_ni_accent(i, mot)]
|
||||||
|
|
||||||
question(2)
|
question(2)
|
||||||
|
|
||||||
for a in ['Orange', 'Calbuth']:
|
for a in ['Orange', 'Calbuth']:
|
||||||
print('Les anagrammes de %s sont %s.' % (a, ', '.join(anagrammes(a))))
|
print('Les anagrammes de %s sont %s.' % (a, ', '.join(anagrammes(a))))
|
||||||
|
|
||||||
|
|
||||||
section('Anagrammes d\'un mot : seconde méthode')
|
section('Anagrammes d\'un mot : seconde méthode')
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
print('Il se peut que certains mots du lexique soient des anagrammes d\'autres mots du lexique,\
|
print('Il se peut que certains mots du lexique soient des anagrammes d\'autres mots du lexique,\
|
||||||
or on se retrouverait alors avec plusieurs fois la même liste d\'anagrammes \
|
or on se retrouverait alors avec plusieurs fois la même liste d\'anagrammes \
|
||||||
pour des clés différentes.')
|
pour des clés différentes.')
|
||||||
|
|
||||||
question(2)
|
question(2)
|
||||||
|
|
||||||
|
|
||||||
def cle(mot):
|
def cle(mot):
|
||||||
"""
|
"""
|
||||||
Renvoie la version triée des lettres en minuscule et sans accents de mot
|
Renvoie la version triée des lettres en minuscule et sans accents de mot
|
||||||
|
@ -374,9 +346,7 @@ def cle(mot):
|
||||||
|
|
||||||
return sort(cpy)
|
return sort(cpy)
|
||||||
|
|
||||||
|
|
||||||
question(3)
|
question(3)
|
||||||
|
|
||||||
ANAGRAMMES = dict()
|
ANAGRAMMES = dict()
|
||||||
|
|
||||||
for m in LEXIQUE:
|
for m in LEXIQUE:
|
||||||
|
@ -390,8 +360,6 @@ for m in LEXIQUE:
|
||||||
print('Le dictionnaire des anagrammes contient %d entrées' % len(ANAGRAMMES))
|
print('Le dictionnaire des anagrammes contient %d entrées' % len(ANAGRAMMES))
|
||||||
|
|
||||||
question(4)
|
question(4)
|
||||||
|
|
||||||
|
|
||||||
def anagrammes2(mot):
|
def anagrammes2(mot):
|
||||||
"""
|
"""
|
||||||
Recherche les anagrammes de mot
|
Recherche les anagrammes de mot
|
||||||
|
@ -408,9 +376,7 @@ def anagrammes2(mot):
|
||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
question(5)
|
question(5)
|
||||||
|
|
||||||
for a in ['Orange', 'Calbuth']:
|
for a in ['Orange', 'Calbuth']:
|
||||||
print('Les anagrammes de %s sont %s.' % (a, ', '.join(anagrammes2(a))))
|
print('Les anagrammes de %s sont %s.' % (a, ', '.join(anagrammes2(a))))
|
||||||
|
|
||||||
|
@ -418,7 +384,6 @@ for a in ['Orange', 'Calbuth']:
|
||||||
section('Comparaison des deux méthodes')
|
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
|
||||||
|
@ -444,7 +409,6 @@ pris un certain temps, mais reste négligeable par rapport à la première méth
|
||||||
partie('Phrases d\'anagrammes') # Geoffrey
|
partie('Phrases d\'anagrammes') # Geoffrey
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
# TODO Texte explicatif du concept d'arbres
|
# TODO Texte explicatif du concept d'arbres
|
||||||
|
|
||||||
|
|
||||||
|
@ -497,13 +461,12 @@ def annagrammes_phrase(phrase):
|
||||||
print('>>> annagrammes_phrase(\'Mange ton orange\')')
|
print('>>> annagrammes_phrase(\'Mange ton orange\')')
|
||||||
print(annagrammes_phrase('Mange ton orange'))
|
print(annagrammes_phrase('Mange ton orange'))
|
||||||
|
|
||||||
|
|
||||||
partie('Sauvegarde et récupération')
|
partie('Sauvegarde et récupération')
|
||||||
|
|
||||||
ANAGRAMMES_FICHIER = 'anagrammes.txt'
|
ANAGRAMMES_FICHIER = 'anagrammes.txt'
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
|
|
||||||
def sauver_dico():
|
def sauver_dico():
|
||||||
"""
|
"""
|
||||||
Sauvegarde le dictionnaire des anagrammes dans un fichier.
|
Sauvegarde le dictionnaire des anagrammes dans un fichier.
|
||||||
|
@ -521,10 +484,7 @@ taille = getsize(ANAGRAMMES_FICHIER)
|
||||||
print('Le dictionnaire fait %d octets, soit %0.3f Mio.' %
|
print('Le dictionnaire fait %d octets, soit %0.3f Mio.' %
|
||||||
(taille, taille / 1024 / 1024))
|
(taille, taille / 1024 / 1024))
|
||||||
|
|
||||||
|
|
||||||
question(3)
|
question(3)
|
||||||
|
|
||||||
|
|
||||||
def charger_dico():
|
def charger_dico():
|
||||||
"""
|
"""
|
||||||
Lit le dictionnaire des anagrammes depuis un fichier.
|
Lit le dictionnaire des anagrammes depuis un fichier.
|
||||||
|
|
Reference in a new issue