OUJOOD.COM
Inverser une chaîne revient souvent en entretien technique et dans les exercices de débutants. Python n'a pas de méthode .reverse() sur les chaînes — contrairement aux listes — mais le résultat s'obtient de plusieurs façons, chacune utile selon le contexte.
Ce cours couvre quatre approches : le slicing (la plus courte), reversed(), la boucle for, et la récursion. À la fin, vous verrez aussi comment détecter un palindrome, ce qui est une application directe de l'inversion.
Méthode 1 : le slicing [::-1]
C'est la méthode que vous croiserez le plus souvent dans du code Python réel. Le slicing [start:stop:step] avec step=-1 parcourt la chaîne de droite à gauche — sans start ni stop, il prend tout.
texte = "Bonjour" # [::-1] : pas de start ni stop, step de -1 → lecture à l'envers inverse = texte[::-1] print(inverse) # Résultat : ruojnoB # Fonctionne aussi sur des phrases phrase = "Python est génial" print(phrase[::-1]) # Résultat : lainég tse nohtyP # Et sur des nombres convertis en chaîne nombre = str(12345) print(nombre[::-1]) # Résultat : 54321
Méthode 2 : reversed() avec join()
reversed() retourne un itérateur qui parcourt la chaîne à l'envers. "".join() recolle les caractères. C'est plus verbeux que le slicing, mais le code se lit presque comme une phrase — pratique quand vous travaillez en équipe ou que vous écrivez du code pédagogique.
texte = "Bonjour" # reversed() retourne un itérateur de caractères à l'envers # join() les recolle en une seule chaîne inverse = "".join(reversed(texte)) print(inverse) # Résultat : ruojnoB # Étape par étape pour bien comprendre iterateur = reversed(texte) caracteres = list(iterateur) print(caracteres) # Résultat : ['r', 'u', 'o', 'j', 'n', 'o', 'B'] resultat = "".join(caracteres) print(resultat) # Résultat : ruojnoB
Méthode 3 : boucle for
Plus longue à écrire, mais elle rend visible ce qui se passe : chaque caractère est placé avant les précédents, ce qui construit la chaîne inversée au fur et à mesure. Si vous débutez en programmation, je vous conseille de commencer par là avant de passer au slicing.
texte = "Bonjour"
inverse = ""
for caractere in texte:
# Chaque caractère est placé avant les précédents
inverse = caractere + inverse
print(inverse)
# Résultat : ruojnoB
# Variante avec range() en parcourant par index décroissant
inverse2 = ""
for i in range(len(texte) - 1, -1, -1):
inverse2 += texte[i]
print(inverse2)
# Résultat : ruojnoB
Méthode 4 : récursion
Personne n'utilise la récursion pour inverser une chaîne en production — c'est lent et la pile d'appels a ses limites. Mais c'est un exercice classique pour comprendre comment une fonction peut s'appeler elle-même. Le principe : on prend le dernier caractère, et on recommence sur le reste, jusqu'à ce qu'il ne reste plus rien.
def inverser(texte):
# Cas de base : chaîne vide ou d'un seul caractère
if len(texte) <= 1:
return texte
# Cas récursif : dernier caractère + inversion du reste
return texte[-1] + inverser(texte[:-1])
print(inverser("Bonjour"))
# Résultat : ruojnoB
# Trace de l'exécution pour "abc" :
# inverser("abc") → "c" + inverser("ab")
# inverser("ab") → "b" + inverser("a")
# inverser("a") → "a"
# Résultat final → "c" + "b" + "a" = "cba"
Application : détecter un palindrome
Un palindrome est un mot ou une phrase qui se lit pareil dans les deux sens : « kayak », « radar », « elle ». En Python, ça tient en une comparaison — on normalise d'abord en minuscules et sans espaces, puis on compare la chaîne à son inverse.
def est_palindrome(texte):
# Normaliser : minuscules et sans espaces
propre = texte.lower().replace(" ", "")
return propre == propre[::-1]
mots = ["kayak", "radar", "Python", "elle", "level", "bonjour"]
for mot in mots:
statut = "palindrome ✓" if est_palindrome(mot) else "non palindrome"
print(f"{mot:10} → {statut}")
# Résultat :
# kayak → palindrome ✓
# radar → palindrome ✓
# Python → non palindrome
# elle → palindrome ✓
# level → palindrome ✓
# bonjour → non palindrome
Inverser les mots d'une phrase
Attention à ne pas confondre deux choses différentes : inverser les caractères d'une chaîne, et inverser l'ordre des mots. Le résultat n'est pas le même du tout.
phrase = "Python est génial" # Inverser tous les caractères print(phrase[::-1]) # Résultat : lainég tse nohtyP # Inverser l'ordre des mots (chaque mot reste intact) mots = phrase.split() mots.reverse() print(" ".join(mots)) # Résultat : génial est Python # En une ligne avec slicing sur la liste print(" ".join(phrase.split()[::-1])) # Résultat : génial est Python
Récapitulatif des méthodes
| Méthode | Code | Usage recommandé |
|---|---|---|
| Slicing | texte[::-1] | Production, code concis |
| reversed() + join() | "".join(reversed(texte)) | Code lisible et explicite |
| Boucle for | for c in texte: inv = c + inv | Apprentissage, pédagogie |
| Récursion | texte[-1] + inverser(texte[:-1]) | Exercice algorithmique |
Par carabde | Mis à jour le 24 avril 2026