string index out of range

Python Erreur courante

Explication

L'erreur `IndexError: string index out of range` survient quand vous accédez à un **indice de caractère qui n'existe pas** dans une chaîne. Les indices valides vont de `0` à `len(chaine) - 1` ; au-delà (ou sur une chaîne vide), l'accès échoue. ```python mot = "abc" print(mot[5]) # les indices valides sont 0, 1, 2 # IndexError: string index out of range ```

Causes courantes

- **Indice supérieur** à `len(chaine) - 1`. - **Chaîne vide** suivie d'un accès `chaine[0]`. - **Erreur de décalage** (« off-by-one ») dans une boucle. - **Chaîne plus courte que prévu** (saisie, parsing).

1. Vérifiez la longueur avant d'accéder

if len(mot) > 5:
    print(mot[5])

2. Parcourez les caractères directement

for c in mot:        # ✅ aucun IndexError possible
    print(c)

3. Utilisez le découpage (slicing), qui ne lève jamais d'erreur

print(mot[5:])    # "" si hors limites, pas d'erreur
print(mot[-1] if mot else "")   # dernier caractère en sécurité

Comment prevenir cette erreur

- **Parcourez** (`for c in chaine`) plutôt que d'indexer manuellement. - **Testez `if chaine:`** avant d'accéder à `chaine[0]`. - **Préférez le slicing** (`chaine[i:j]`) qui tronque silencieusement au lieu de lever une erreur. - Référence : [docs.python.org — str](https://docs.python.org/fr/3/library/stdtypes.html#text-sequence-type-str).

Besoin d'aide sur votre projet ?

Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.

Nous contacter

Questions frequentes

Pourquoi `mot[5:]` ne lève-t-il pas d'erreur alors que `mot[5]` si ?
Parce que le **découpage** (slicing) est tolérant : il renvoie une chaîne vide si la plage dépasse, tandis que l'**indexation** d'un seul caractère exige que l'indice existe.
Comment récupérer le dernier caractère sans risque ?
`mot[-1]`, mais seulement après avoir vérifié que la chaîne n'est pas vide : `mot[-1] if mot else ""`.

Erreurs similaires

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.