Python TD2


Chaînes de caractères, listes, dictionnaires ...



Exercice 1 Quelques one-liners pour s'échauffer. Le but de l'exercice est d'explorer la documentation pour trouver le moyen de coder ces fonctions en une ligne.
a) Ecrire une fonction is_palindrome qui reconnaît si un mot est un palindrome.
b) Ecrire une fonction is_pangram qui reconnaît si une phrase (sans lettres accentuées, par exemple en anglais) est un pangramme, c'est à dire, contient au moins une fois chaque lettre de l'alphabet (exemples : The quick brown fox jumps over the lazy dog, ou encore Portez ce vieux whisky au juge blond qui fume.
c) Ecrire une fonction remove_adjacent qui prend en argument une liste et élimine les répétitions consécutives d'un même élément, par exemple pour [1,2,2,3,3,1] on doit obtenir [1,2,3,1].
d) Ecrire une fonction digits_sum qui prend comme argument un entier et renvoie la somme de ses chiffres.

Exercice 2 Les lycéens aiment bien occuper leurs cours de maths en cherchant des messages qui peuvent s'écrire en lisant à l'envers l'afficheur de la calculatrice, comme par exemple

ou encore , ou même
obtenus respectivement en écrivant 378151771, 5318804 et 371830.
Pour leur faciliter la tâche, écrivez un programme qui prend en entrée un dictionnaire comme celui-ci (ou un autre de votre choix, mais le format et l'encodage ne seront pas forcément les mêmes), et qui produit la liste des mots qui peuvent s'écrire ainsi. On pourra utiliser
1=I, 2=Z, 3=E, 4=h, 5=S, (6=g), 7=L, 8=B, 9=G, 0=D ou O.
se retourne en
Sur le même principe, on peut programmer un dictionnaire de scrabble : étant donnée une chaîne quelconque (majuscules non accentuées), trouver un mot le plus long possible formé avec ses lettres :
>>> lookup('XWRDYTRERASZ')
['DARTRES', 'RETARDS', 'STEWARD']
>>> 


Exercice 3 Il pîaart que puor la lctreue, l'orrde des lrttees à l'iétunreir des mots n'a acnuue itnpocmare.
La sulee chose qui cptmoe est que la pemièrre et la dneèirre lttree seonit à leur pclae.

Écrire un programme permettant de tester cette théorie.
Il devra prendre en entrée un fichier "texte" (disons, pour commencer, du français en ASCII étendu 'latin-1' ou en 'utf-8')
et mélanger aléatoirement les lettres à l'intérieur des mots en respectant la ponctuation et la mise en page.
Une fois le programme fonctionnel, on étudiera la possibilité de traiter des fichiers utilisant des encodages de caractères différents.
Par exemple, le fichier harmonie.txt devra donner quelque chose comme ceci.
Tester votre programme sur un fichier plus gros, comme celui-ci.
Que faudrait-il faire pour brouiller de la même manière une page html en conservant sa mise en page ?