diff --git a/S2/TP2/tp2.py b/S2/TP2/tp2.py index 44dd396..72230e5 100644 --- a/S2/TP2/tp2.py +++ b/S2/TP2/tp2.py @@ -41,8 +41,8 @@ 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') +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'") @@ -52,8 +52,9 @@ print(s.split(' ')) print('>>> s') print('\'' + s + '\'') -print( - 'De par cet exemple, on remarque que s reste la même chaîne de caractère, `split` 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') +print('De par cet exemple, on remarque que s reste la même chaîne de caractère, `split` 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') section('Méthode join') @@ -85,8 +86,8 @@ 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.') +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 = \'!\'') @@ -97,13 +98,16 @@ print('>>> chaine') print('\'' + chaine + '\'') -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') +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. + Retourne la concaténation des éléments de séquence en insérant chaine entre eux. str, [str *] → str """ res = '' @@ -139,26 +143,27 @@ l.sort() print('>>> l') print(l) -print( - 'La méthode sort trie aussi les caractères spéciaux : ponctuation au début, accents à la fin') +print('La méthode sort trie aussi les caractères spéciaux : ponctuation au début, accents à la fin') -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é)') +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()') -print( - 'On obtient une erreur comme quoi les types str et int ne sont pas ordonnable. En effet, il n\'est pas logique d\'ordonner des caractères avec des chiffres.') -print( - 'Notons qu\'il aurait très bien pu être possible que cette méthode utilise le code des caractères, puisque celui-ci est de type int, comme c\'était le cas avec Python 2.') +print('On obtient une erreur comme quoi les types str et int ne sont pas ordonnable. En effet, il \ +n\'est pas logique d\'ordonner des caractères avec des chiffres.') +print('Notons qu\'il aurait très bien pu être possible que cette méthode utilise le code des \ +caractères, puisque celui-ci est de type int, comme c\'était le cas avec Python 2.') section('Une fonction sort pour les chaînes') question(1) + + def sort(chaine): """ Trie les caractères de chaine par ordre de codage. @@ -176,6 +181,8 @@ print(sort('timoleon')) partie('Anagrammes') # Jean-loup question(1) + + def sont_anagrammes1(chaine1, chaine2): """ Indique si chaine1 et chaine2 sont anagrammes @@ -196,6 +203,8 @@ def sont_anagrammes1(chaine1, chaine2): return c1 == c2 question(2) + + def sont_anagrammes2(chaine1, chaine2): """ Indique si chaine1 et chaine2 sont anagrammes @@ -216,6 +225,8 @@ def sont_anagrammes2(chaine1, chaine2): return occu1 == occu2 question(3) + + def sont_anagrammes3(chaine1, chaine2): """ Indique si chaine1 et chaine2 sont anagrammes @@ -244,6 +255,8 @@ 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 @@ -265,6 +278,8 @@ 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 @@ -309,6 +324,8 @@ 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 @@ -333,6 +350,8 @@ print('Il se peut que certains mots du lexique soient des anagrammes d\'autres m 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 @@ -360,6 +379,8 @@ 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 @@ -416,7 +437,7 @@ def liste_possibilites(arbre, precede): """ 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']] """ @@ -467,6 +488,8 @@ partie('Sauvegarde et récupération') ANAGRAMMES_FICHIER = 'anagrammes.txt' question(1) + + def sauver_dico(): """ Sauvegarde le dictionnaire des anagrammes dans un fichier. @@ -485,6 +508,8 @@ 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.