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
message
en loucherbem. Je viens d'ajouter une variableargot
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 dumessage
donc 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
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
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 variableargot
doit contenir le message en loucherbem. Ajoute unprint
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
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 modulerandom
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
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
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 + ' '