TP2 Changé lignage

This commit is contained in:
Geoffrey Frogeye 2015-02-09 19:49:10 +01:00
parent 38f5b68db6
commit 9f0f11f28f

View file

@ -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.