logo oujood
🔍

Inverser une chaîne de caractères en Python

Inverser une chaîne est un exercice classique en Python. Ce cours présente toutes les méthodes disponibles, de la plus courte à la plus pédagogique.

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.

  📋 Copier le code

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.

  📋 Copier le code

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.

  📋 Copier le code

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.

  📋 Copier le code

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.

  📋 Copier le code

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.

  📋 Copier le code

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éthodeCodeUsage recommandé
Slicingtexte[::-1]Production, code concis
reversed() + join()"".join(reversed(texte))Code lisible et explicite
Boucle forfor c in texte: inv = c + invApprentissage, pédagogie
Récursiontexte[-1] + inverser(texte[:-1])Exercice algorithmique

Par carabde | Mis à jour le 24 avril 2026