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
On va transformer le
messageen loucherbem. Je viens d'ajouter une variableargotau 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
printdans 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.motest une chaîne de caractères, c'est l'un des mots dumessagedonc on peut faire une concaténation à l'aide d'un+et sélectionner toutes les lettres sauf la première en faisantmot[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
À 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
lenpour 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
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
argotet sa nouvelle valeur sera la concaténation de sa valeur actuelle avec le mot à ajouter. Par exemple :argot = argot + motMais dans ce cas il n'y aura pas d'espace entre les mots. Il faut également l'ajouter :
argot = argot + mot + ' 'Remplace les
printde la boucle for en adaptant l'exemple précédent. À la fin la variableargotdoit contenir le message en loucherbem. Ajoute unprintfinal de cette variable et n'oublie pas les espaces entre les mots.Solution
On construit la chaîne de caractères
argotité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
Les véritables locuteurs de loucherbem se reconnaissent en s'amusant à faire varier le suffixe.
J'ai ajouté une fonction
suffixequi 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
sampledu modulerandomet cette fonction me sert à piocher au hasard un élément parmi la liste de suffixes possibles.Appelle la fonction
suffixedeux 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
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 fonctionsuffixe. Puis amuse-toi à générer différentes version du message !Solution
La fonction
suffixenous 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 + ' '