can only concatenate str (not 'int') to str
Python
Erreur courante
Explication
L'erreur `TypeError: can only concatenate str (not "int") to str` apparaît quand vous utilisez `+` pour **coller un nombre à une chaîne**. En Python, `+` entre une `str` et un `int` est ambigu : Python refuse de deviner s'il faut additionner ou concaténer, et exige que les deux côtés soient des chaînes.
```python
n = 5
print("Vous avez " + n + " messages")
# TypeError: can only concatenate str (not "int") to str
```
Causes courantes
- **Concaténer un nombre à du texte** avec `+`. - **Construire un message** à partir d'une variable numérique sans la convertir. - **Concaténer une liste et un élément** : `["a"] + "b"` (il faut `["a"] + ["b"]`).
1. Utilisez une f-string (recommandé)
n = 5
print(f"Vous avez {n} messages") # ✅ conversion automatique
2. Convertissez explicitement avec str()
print("Vous avez " + str(n) + " messages") # ✅
3. Utilisez les arguments de print
print("Vous avez", n, "messages") # print insère des espaces
4. Pour les listes, concaténez des listes
elements = ["a", "b"]
elements = elements + ["c"] # ✅ et non + "c"
Comment prevenir cette erreur
- **Adoptez les f-strings** partout : `f"{variable}"` convertit tout type en texte.
- **Réservez `+`** à la concaténation de deux chaînes ou de deux listes du même type.
- Un vérificateur de types (`mypy`) signale `str + int` à l'avance.
Besoin d'aide sur votre projet ?
Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.
Nous contacterQuestions frequentes
Quelle différence avec `unsupported operand type(s) for +`?
C'est la même famille d'erreurs (mélange de types avec `+`). Le message exact varie selon l'ordre des opérandes (`str + int` vs `int + str`), mais la solution est identique : aligner les types, idéalement avec une f-string.
Pourquoi les f-strings sont-elles recommandées ?
Parce qu'elles convertissent automatiquement les valeurs en texte, sont plus lisibles et plus rapides que la concaténation avec `+` et `str()`.