Outils pour utilisateurs

Outils du site


issue80:python_-_partie_50

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue80:python_-_partie_50 [2014/05/04 21:12] fredphil91issue80:python_-_partie_50 [2014/05/07 10:55] (Version actuelle) auntiee
Ligne 4: Ligne 4:
 s = str.translate(table[,deletecharacters]) s = str.translate(table[,deletecharacters])
  
-**Ce mois-ci , je vais vous parler de deux fonctions un peu moins connues : maketrans et translate. Nous allons commencer par la méthode translate. La méthode translate retourne une copie d'une chaîne, avec tous les caractères de la table translate remplacés (traduits) ou bien avec des caractères supprimés de la chaîne, s'ils sont contenus dans 'deletechars' (optionnel). Voici la syntaxe à utiliser :+**Ce mois-ci , je vais parler de deux fonctions un peu moins connues : maketrans et translate. Nous allons commencer par la méthode translate. La méthode translate retourne une copie d'une chaîne, avec tous les caractères de la table translate remplacés (traduits) ou bien avec des caractères supprimés de la chaîne, s'ils sont contenus dans 'deletechars' (optionnel). Voici la syntaxe à utiliser :
  
 s = str.translate(table[,deletecharacters]) s = str.translate(table[,deletecharacters])
Ligne 19: Ligne 19:
 “Th tm hs cm” “Th tm hs cm”
  
-**Avant de passer à la partie 'table' de cette méthode, regardons la partie suppression. Disons que vous avez la chaîne «The time has come » et que vous vouliez supprimer toutes les voyelles (pour une raison certes étrange, mais pourquoi pas) de cette chaîne. Vous pouvez coder comme ceci :+**Avant de passer à la partie 'table' de cette méthode, regardons la partie suppression. Disons que vous avez la chaîne «The time has come » et que vous voulez supprimer toutes les voyelles (pour une raison certes étrange, mais pourquoi pas) de cette chaîne. Vous pouvez coder comme ceci :
  
 astr = "The time has come" astr = "The time has come"
Ligne 59: Ligne 59:
 So now it should be making sense.  So now it should be making sense. 
  
-**Si vous regardez encore de  plus près, vous verrez qu'il y a effectivement 256 entrées, en commençant par « \x00 » et en se terminant par « \xff ». Ainsi, le tableau contient l'ensemble des 256 codes possibles du jeu de caractères ascii. Ainsi, lorsque la méthode « translate » parcourt chaque caractère du tableau, elle obtient la valeur des caractères en hexadécimal, puis recherche la valeur dans le tableau « translate » et la remplace dans la chaîne de sortie. La représentation hexadécimale de notre chaîne « astr » originale (« The time has come ») est représentée ci-dessous.+**Si vous regardez encore de plus près, vous verrez qu'il y a effectivement 256 entrées, en commençant par « \x00 » et en se terminant par « \xff ». Ainsi, le tableau contient l'ensemble des 256 codes possibles du jeu de caractères ascii. Ainsi, lorsque la méthode « translate » parcourt chaque caractère du tableau, elle obtient la valeur des caractères en hexadécimal, puis recherche la valeur dans le tableau « translate » et la remplace dans la chaîne de sortie. La représentation hexadécimale de notre chaîne « astr » originale (« The time has come ») est représentée ci-dessous.
  
 Maintenant, vous devez commencer à comprendre.** Maintenant, vous devez commencer à comprendre.**
Ligne 71: Ligne 71:
 While this seems very simple by today’s standards, when I was a school kid, we used this all the time to send messages to each other. We used a different index into the string to start the encryption string, the logic behind it was the same. While this seems very simple by today’s standards, when I was a school kid, we used this all the time to send messages to each other. We used a different index into the string to start the encryption string, the logic behind it was the same.
  
-**Alors maintenant, à quoi tout cela peut-il servir ? Faites un retour en arrière et pensez à la période où vous avez étudié le personnage de Jules César à l'école... Lorsque César voulait envoyer un message à caractère confidentiel, il utilisait un chiffrement qui consistait à décaler, de trois caractères vers la droite, les lettres de l'alphabet. Ainsi, en utilisant l'alphabet latin d'aujourd'hui : ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+**Alors, à quoi tout cela peut-il servir ? Faites un retour en arrière et pensez à la période où vous avez étudié le personnage de Jules César à l'école... Lorsque César voulait envoyer un message à caractère confidentiel, il utilisait un chiffrement qui consistait à décaler, de trois caractères vers la droite, les lettres de l'alphabet. Ainsi, en utilisant l'alphabet latin d'aujourd'hui : ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
  
 cela se transformait en : DEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABC cela se transformait en : DEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABC
Ligne 82: Ligne 82:
 We can easily use the translate method and the maketrans helper function to allow us to have fun with this. Let’s say we want to make a simple program that allows us to enter a string of “plain text” and get back an encrypted string using the same side right method that Caesar used. For simplicity sake, let’s only use uppercase characters (shown top right). We can easily use the translate method and the maketrans helper function to allow us to have fun with this. Let’s say we want to make a simple program that allows us to enter a string of “plain text” and get back an encrypted string using the same side right method that Caesar used. For simplicity sake, let’s only use uppercase characters (shown top right).
  
-**Personne ne sait si cette méthode fut un succès pour ce bon vieux Jules Cesar mais on peut penser que si quelqu'un interceptait un tel message à l'époque, il aurait certainement cru qu'il s'agissait d'une langue étrangère ! Enfin, c'est ce que l'on peut supposer...+**Personne ne sait si cette méthode fut un succès pour ce bon vieux Jules César mais on peut penser que si quelqu'un interceptait un tel message à l'époque, il aurait certainement cru qu'il s'agissait d'une langue étrangère ! Enfin, c'est ce que l'on peut supposer...
  
 Nous pouvons facilement utiliser la méthode « translate »  et la fonction « maketrans » pour nous amuser un peu avec ça. Partons du principe que nous voulons faire un programme simple qui nous permet d'entrer une chaîne de « texte en clair » et d'obtenir en retour une chaîne cryptée en utilisant la même méthode de décalage à droite que celle utilisée par César. Par souci de simplicité, nous allons uniquement utiliser des caractères majuscules (voir en haut et à droite de cette page).** Nous pouvons facilement utiliser la méthode « translate »  et la fonction « maketrans » pour nous amuser un peu avec ça. Partons du principe que nous voulons faire un programme simple qui nous permet d'entrer une chaîne de « texte en clair » et d'obtenir en retour une chaîne cryptée en utilisant la même méthode de décalage à droite que celle utilisée par César. Par souci de simplicité, nous allons uniquement utiliser des caractères majuscules (voir en haut et à droite de cette page).**
Ligne 90: Ligne 90:
 The first two lines are the in and out strings. We’ve just shifted the characters and wrapped around to create the out string. The next two lines create a table for encoding and one for decoding. Line 5 prompts the user to enter a string to encode. We then encode that string (EncString) in the next line. To decode it, we simply use the translate method on the encoded string to get the plain text back. Finally we print both strings out. Here’s the output of the program. The first two lines are the in and out strings. We’ve just shifted the characters and wrapped around to create the out string. The next two lines create a table for encoding and one for decoding. Line 5 prompts the user to enter a string to encode. We then encode that string (EncString) in the next line. To decode it, we simply use the translate method on the encoded string to get the plain text back. Finally we print both strings out. Here’s the output of the program.
  
-**Tout ce que vous trouverez dans le code ci-dessus est à peu près ce que nous avons vu au début de cet article ou dans les précédents articles sur Python, mais je vais aller à l'essentiel...+**Tout ce que vous trouverez dans le code ci-dessus est à peu près ce que nous avons vu au début de cet article ou dans les précédents articles sur Python, mais je vais expliquer rapidement...
  
-Les deux premières lignes représentent la chaîne en entrée et celle en sortie. Nous avons juste déplacé les caractères vers la droite pour créer la chaîne en sortie. Les deux lignes suivantes représentent les fonctions d'encodage et de décodage. La ligne 5 invite l'utilisateur à saisir une chaîne à encoder. On encode alors cette chaîne (EncString) dans la ligne suivante. Pour décoder, nous utilisons simplement la méthode « translate » sur la chaîne codée pour obtenir le texte en clair. Enfin, nous affichons les deux chaînes à la sortie du programme.+Les deux premières lignes représentent les chaînes d'entrée et de sortie. Nous avons juste déplacé les caractères vers la droite pour créer la chaîne de sortie. Les deux lignes suivantes représentent les fonctions d'encodage et de décodage. La ligne 5 invite l'utilisateur à saisir une chaîne à encoder. On encode alors cette chaîne (EncString) dans la ligne suivante. Pour décoder, nous utilisons simplement la méthode « translate » sur la chaîne codée pour obtenir le texte en clair. Enfin, nous affichons les deux chaînes. Voici ce qu'affiche le programme.
 ** **
  
Ligne 103: Ligne 103:
 Just like back in school. But let’s flesh it out just a bit to make it a bit more usable. The code is almost the same with a few exceptions. First, we have added a space to the end of the intab string and in between the “Z” and the “A” in the outtab string. This helps keep the actual words from being too obvious in the encrypted string. The next change is where we ask if the user wants to encode or decode the string. Finally we added an if statement to control what we print (shown bottom right). Just like back in school. But let’s flesh it out just a bit to make it a bit more usable. The code is almost the same with a few exceptions. First, we have added a space to the end of the intab string and in between the “Z” and the “A” in the outtab string. This helps keep the actual words from being too obvious in the encrypted string. The next change is where we ask if the user wants to encode or decode the string. Finally we added an if statement to control what we print (shown bottom right).
  
-**Voilà, c'est comme si nous étions retournés à l'école ! Mais nous allons étoffer un peu notre code pour le rendre un peu plus « user-friendly ». Le code est pratiquement le même à quelques exceptions près. Tout d'abord, nous avons ajouté un espace à la fin de la chaîne de intab et entre le « Z » et le « A » dans la chaîne de outtab. Cela permet de mieux « brouiller les cartes » dans notre chaîne cryptée et de la rendre moins évidente à décoder. L'autre changement concerne l'endroit où nous demandons si l'utilisateur veut coder ou décoder la chaîne. Enfin , nous avons ajouté une instruction « if » pour contrôler ce que nous affichons (voir en bas et à droite).+**Voilà, c'est comme à l'école ! Mais nous allons étoffer un peu notre code pour le rendre un peu plus utilisable. Le code est pratiquement le même à quelques exceptions près. Tout d'abord, nous avons ajouté une espace à la fin de la chaîne intab et entre le « Z » et le « A » dans la chaîne outtab. Cela permet de mieux cacher les mots d'origine dans notre chaîne cryptée. L'autre changement concerne l'endroit où nous demandons si l'utilisateur veut coder ou décoder la chaîne. Enfin , nous avons ajouté une instruction « if » pour contrôler ce que nous affichons (voir en bas et à droite).
 ** **
  
issue80/python_-_partie_50.1399230747.txt.gz · Dernière modification : 2014/05/04 21:12 de fredphil91