Contenu principal
Chapitre 7 · Les listes › Leçon 6 sur 8

Le loucherbem en loucedé

Dans cette leçon on va s'amuser à transformer un message dans un argot encore utilisé, le loucherbem (prononcer "louchébem")

Cet argot est apparu au XIXe chez les bouchers. Il permet d'échanger des messages sans être compris des clients !

  1. 1

    On va transformer le message en loucherbem. Je viens d'ajouter une variable argot au code de la leçon précédente. Pour l'instant cette variable est une chaîne de caractères vide.

    Voici la règle simplifiée du loucherbem sur un exemple : prenons le mot boucher. On reporte l'initiale du mot à la fin ce qui donne oucherb, on ajoute un L au début ainsi que le suffixe EM et on obtient loucherbem.

    Donc à présent tu sais ce que signifie le mot loucherbem !

    Modifie le print dans le corps de la boucle for de manière à respecter les règles précédentes : pour chaque mot on souhaite afficher la concaténation d'un L initial suivi des lettres suivantes dans le mot, suivi de l'initiale du mot, suivi du suffixe EM. Le préfixe et le suffixe sont ajoutés en minuscules.

    Solution

    À chaque itération, au lieu d'afficher mot à l'aide du print, on va le modifier.

    mot est une chaîne de caractères, c'est l'un des mots du message donc on peut faire une concaténation à l'aide d'un + et sélectionner toutes les lettres sauf la première en faisant mot[1:]

    Donc la règle simplifiée nous demande d'afficher la concaténation suivante : 'l' + mot[1:] + mot[0] + 'em'

    message = "passe le morceau un peu rassis"
    mots = message.split(' ')
    argot = ""
    
    for mot in mots:
    	print('l' + mot[1:] + mot[0] + 'em')
  2. 2

    À présent le message est totalement incompréhensible, c'est un peu trop ! On va se limiter à transformer les mots de plus de 3 caractères.

    Dans le corps de la boucle for ajoute une instruction conditionnelle : si le mot a plus de trois caractères alors on affiche la version transformée, sinon on affiche le mot sans modification.

    Solution

    On utilise la fonction len pour vérifier la longueur de chaque mot :

    message = "passe le morceau un peu rassis"
    mots = message.split(' ')
    argot = ""
    
    for mot in mots:
    	if len(mot) > 3:
    		print('l' + mot[1:] + 'em')
    	else:
    		print(mot)
  3. 3

    C'est beaucoup mieux ! Mais pour le moment ces mots sont affichés séparément, chacun sur une ligne différente. Il nous reste à les combiner en une seule chaîne de caractères dans la variable argot.

    Pour combiner ces différents mots dans une seule chaîne de caractères, on va procéder comme pour incrémenter une variable : à chaque itération on va réassigner la variable argot et sa nouvelle valeur sera la concaténation de sa valeur actuelle avec le mot à ajouter. Par exemple :

    argot = argot + mot

    Mais dans ce cas il n'y aura pas d'espace entre les mots. Il faut également l'ajouter :

    argot = argot + mot + ' '

    Remplace les print de la boucle for en adaptant l'exemple précédent. À la fin la variable argot doit contenir le message en loucherbem. Ajoute un print final de cette variable et n'oublie pas les espaces entre les mots.

    Solution

    On construit la chaîne de caractères argot itération par itération. À chaque itération on ajoute à cette chaîne le mot suivant par une concaténation.

    Pour avoir un espace entre les mots il faut ajouter cet espace lors de la réassignation :

    message = "passe le morceau un peu rassis"
    mots = message.split(' ')
    argot = ""
    
    for mot in mots:
    	if len(mot) > 3:
    		argot = argot + 'l' + mot[1:] + mot[0] + 'em' + ' '
    	else:
    		argot = argot + mot + ' '
    
    print(argot)
  4. 4

    Les véritables locuteurs de loucherbem se reconnaissent en s'amusant à faire varier le suffixe.

    J'ai ajouté une fonction suffixe qui renvoie un suffixe aléatoirement pris dans une liste.

    Observe le code de l'éditeur pour voir comment j'ai créé cette fonction : j'importe une fonction sample du module random et cette fonction me sert à piocher au hasard un élément parmi la liste de suffixes possibles.

    Appelle la fonction suffixe deux ou trois fois dans la console pour t'assurer qu'elle fonctionne comme prévu.

    Solution

    Cette fonction renvoie bien un suffixe aléatoire parmi ceux de la liste :

    >>> suffixe()
    uche
    >>> suffixe()
    em
  5. 5

    Il ne reste plus qu'à utiliser cette fonction pour avoir la version officielle du loucherbem.

    Dans la boucle for remplace le suffixe "em" de la concaténation par un suffixe aléatoire à l'aide de la fonction suffixe. Puis amuse-toi à générer différentes version du message !

    Solution

    La fonction suffixe nous permet de générer un suffixe aléatoire à chaque itération :

    for mot in mots:
    	if len(mot) > 3:
    		argot = argot + 'l' + mot[1:] + mot[0] + suffixe() + ' '
    	else:
    		argot = argot + mot + ' '
Tu sais à présent comment manipuler et transformer une chaîne de caractères. Tu as tous les outils pour passer à l'étape suivante : la cryptographie !

Chargement...

Collecte des fichiers...

>>>