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
|
||||
|
||||
|
||||
section('Méthode split')
|
||||
|
||||
question(1)
|
||||
|
||||
print(">>> s = 'la méthode split est parfois bien utile'")
|
||||
s = 'la méthode split est parfois bien utile'
|
||||
print(">>> s.split (' ')")
|
||||
|
@ -41,12 +41,10 @@ print(">>> s.split ('split')")
|
|||
print(s.split('split'))
|
||||
|
||||
question(2)
|
||||
|
||||
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')
|
||||
|
||||
question(3)
|
||||
|
||||
print(">>> s = 'la méthode split est parfois bien utile'")
|
||||
s = 'la méthode split est parfois bien utile'
|
||||
print(">>> s.split(' ')")
|
||||
|
@ -61,7 +59,6 @@ print(
|
|||
section('Méthode join')
|
||||
|
||||
question(1)
|
||||
|
||||
print(">>> s = 'la méthode split est parfois bien utile'")
|
||||
s = 'la méthode split est parfois bien utile'
|
||||
print('>>> l = s.split()')
|
||||
|
@ -88,12 +85,10 @@ print('>>> "".join ([1,2])')
|
|||
print('TypeError: sequence item 0: expected str instance, int found')
|
||||
|
||||
question(2)
|
||||
|
||||
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.')
|
||||
|
||||
question(3)
|
||||
|
||||
print('>>> chaine = \'!\'')
|
||||
chaine = '!'
|
||||
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')
|
||||
|
||||
question(4)
|
||||
|
||||
|
||||
def join(chaine, sequence):
|
||||
"""
|
||||
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']))
|
||||
|
||||
|
||||
section('Méthode sort')
|
||||
|
||||
question(1)
|
||||
|
||||
print('>>> l = list (\'timoleon\')')
|
||||
l = list('timoleon')
|
||||
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é)')
|
||||
|
||||
question(2)
|
||||
|
||||
print('>>> l = [\'a\', 1]')
|
||||
print('>>> l.sort()')
|
||||
print('TypeError: unorderable types: int() < str()')
|
||||
|
@ -167,8 +159,6 @@ print(
|
|||
section('Une fonction sort pour les chaînes')
|
||||
|
||||
question(1)
|
||||
|
||||
|
||||
def sort(chaine):
|
||||
"""
|
||||
Trie les caractères de chaine par ordre de codage.
|
||||
|
@ -186,8 +176,6 @@ print(sort('timoleon'))
|
|||
partie('Anagrammes') # Jean-loup
|
||||
|
||||
question(1)
|
||||
|
||||
|
||||
def sont_anagrammes1(chaine1, chaine2):
|
||||
"""
|
||||
Indique si chaine1 et chaine2 sont anagrammes
|
||||
|
@ -208,8 +196,6 @@ def sont_anagrammes1(chaine1, chaine2):
|
|||
return c1 == c2
|
||||
|
||||
question(2)
|
||||
|
||||
|
||||
def sont_anagrammes2(chaine1, chaine2):
|
||||
"""
|
||||
Indique si chaine1 et chaine2 sont anagrammes
|
||||
|
@ -230,8 +216,6 @@ def sont_anagrammes2(chaine1, chaine2):
|
|||
return occu1 == occu2
|
||||
|
||||
question(3)
|
||||
|
||||
|
||||
def sont_anagrammes3(chaine1, chaine2):
|
||||
"""
|
||||
Indique si chaine1 et chaine2 sont anagrammes
|
||||
|
@ -256,13 +240,10 @@ def sont_anagrammes3(chaine1, chaine2):
|
|||
section('Casse et accentuation')
|
||||
|
||||
question(1)
|
||||
|
||||
EQUIV_NON_ACCENTUE = {'é': 'e', 'è': 'e', 'à': 'a', 'ç': 'c', 'î': 'i', 'ï':
|
||||
'i', 'ô': 'o', 'ê': 'e', 'ë': 'e', 'â': 'a', 'û': 'u', 'ü': 'u', 'ù': 'u'}
|
||||
|
||||
question(2)
|
||||
|
||||
|
||||
def bas_casse_sans_accent(chaine):
|
||||
"""
|
||||
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
|
||||
|
||||
question(3)
|
||||
|
||||
|
||||
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
|
||||
|
@ -315,25 +294,21 @@ section('Le lexique')
|
|||
# TODO Question 1 ?
|
||||
|
||||
question(2)
|
||||
|
||||
from lexique import *
|
||||
|
||||
question(3)
|
||||
|
||||
print('Il y a %d mots dans le lexique' % len(LEXIQUE))
|
||||
|
||||
question(4)
|
||||
|
||||
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
|
||||
# bizarrement la plus rapide
|
||||
print('Le test a retourné %s.' % test)
|
||||
|
||||
|
||||
section('Anagrammes d\'un mot : première méthode')
|
||||
|
||||
question(1)
|
||||
|
||||
|
||||
def anagrammes(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)]
|
||||
|
||||
question(2)
|
||||
|
||||
for a in ['Orange', 'Calbuth']:
|
||||
print('Les anagrammes de %s sont %s.' % (a, ', '.join(anagrammes(a))))
|
||||
|
||||
|
||||
section('Anagrammes d\'un mot : seconde méthode')
|
||||
|
||||
question(1)
|
||||
|
||||
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 \
|
||||
pour des clés différentes.')
|
||||
|
||||
question(2)
|
||||
|
||||
|
||||
def cle(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)
|
||||
|
||||
|
||||
question(3)
|
||||
|
||||
ANAGRAMMES = dict()
|
||||
|
||||
for m in LEXIQUE:
|
||||
|
@ -390,8 +360,6 @@ for m in LEXIQUE:
|
|||
print('Le dictionnaire des anagrammes contient %d entrées' % len(ANAGRAMMES))
|
||||
|
||||
question(4)
|
||||
|
||||
|
||||
def anagrammes2(mot):
|
||||
"""
|
||||
Recherche les anagrammes de mot
|
||||
|
@ -408,9 +376,7 @@ def anagrammes2(mot):
|
|||
else:
|
||||
return []
|
||||
|
||||
|
||||
question(5)
|
||||
|
||||
for a in ['Orange', 'Calbuth']:
|
||||
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')
|
||||
|
||||
question(1)
|
||||
|
||||
NB_TESTS = 30 # Mettre à 0 pour réduire l'attente
|
||||
|
||||
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
|
||||
|
||||
question(1)
|
||||
|
||||
# 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'))
|
||||
|
||||
|
||||
partie('Sauvegarde et récupération')
|
||||
|
||||
ANAGRAMMES_FICHIER = 'anagrammes.txt'
|
||||
|
||||
question(1)
|
||||
|
||||
|
||||
def sauver_dico():
|
||||
"""
|
||||
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.' %
|
||||
(taille, taille / 1024 / 1024))
|
||||
|
||||
|
||||
question(3)
|
||||
|
||||
|
||||
def charger_dico():
|
||||
"""
|
||||
Lit le dictionnaire des anagrammes depuis un fichier.
|
||||
|
|
Reference in a new issue