invalid literal for int() with base 10
Explication
Causes courantes
- **Une chaîne décimale invalide** : lettres, symboles, chaîne vide. - **Un nombre à virgule** passé à `int()` : `int("3.14")` échoue (il faut `float` d'abord). - **Une saisie utilisateur non validée**. - **Une cellule CSV** contenant un en-tête ou une valeur manquante (`"N/A"`, `""`). - **Un séparateur de milliers** : `int("1,000")`.
1. Validez avant de convertir
saisie = input("Quantité : ").strip()
if saisie.isdigit():
qte = int(saisie)
else:
print("Entrez un entier positif valide.")
2. Encadrez avec try / except
La méthode la plus robuste, car .isdigit() ne gère ni le signe - ni les nombres négatifs :
try:
qte = int(saisie)
except ValueError:
qte = 0 # ou redemander la saisie
3. Pour un nombre à virgule, passez par float
int("3.14") # ❌ ValueError
int(float("3.14")) # ✅ 3 (tronque)
round(float("3.14")) # ✅ 3 (arrondit)
4. En production : nettoyez les données
Pour des fichiers CSV ou des exports, retirez les séparateurs et gérez les valeurs manquantes avant la conversion :
brut = "1 234"
qte = int(brut.replace(" ", "").replace(" ", "") or 0)
Comment prevenir cette erreur
Besoin d'aide sur votre projet ?
Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.
Nous contacter