division by zero
Python
Erreur courante
Explication
L'erreur `ZeroDivisionError: division by zero` survient lorsque vous **divisez par zéro** (avec `/`, `//` ou `%`), une opération mathématiquement indéfinie. Le diviseur vaut `0`, souvent parce qu'il dépend de données ou d'une saisie que vous n'avez pas contrôlée.
```python
notes = []
moyenne = sum(notes) / len(notes) # len(notes) vaut 0
# ZeroDivisionError: division by zero
```
Causes courantes
- **Le diviseur vaut 0** directement ou après un calcul. - **Division par la longueur d'une collection vide** (`len(liste)` = 0). - **Saisie utilisateur** égale à 0. - **Donnée manquante** (taux, quantité) à 0.
1. Vérifiez le diviseur avant de diviser
if len(notes) > 0:
moyenne = sum(notes) / len(notes)
else:
moyenne = 0 # ou None, selon le sens métier
2. Utilisez une expression conditionnelle
moyenne = sum(notes) / len(notes) if notes else 0
3. Encadrez avec try / except
try:
ratio = gains / mises
except ZeroDivisionError:
ratio = 0.0
4. En production : décidez du sens métier
Une division par zéro révèle souvent un cas limite (aucune donnée, dénominateur nul). Choisissez explicitement le résultat attendu (0, None, ou lever une erreur métier claire) plutôt que de laisser planter.
Comment prevenir cette erreur
- **Validez les dénominateurs** issus de données ou de saisies.
- **Testez le cas « collection vide »**, fréquent en début de traitement.
- Pour les statistiques, `statistics.mean([])` lève aussi une erreur : gérez la liste vide en amont.
- Référence : [docs.python.org — ZeroDivisionError](https://docs.python.org/fr/3/library/exceptions.html#ZeroDivisionError).
Besoin d'aide sur votre projet ?
Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.
Nous contacterQuestions frequentes
`7 // 0` et `7 % 0` lèvent-ils la même erreur ?
Oui. La division entière `//` et le modulo `%` par zéro lèvent également `ZeroDivisionError`. Seuls les flottants ont un comportement particulier (`1.0 / 0` lève aussi l'erreur en Python).
Comment éviter l'erreur lors d'un calcul de moyenne ?
Vérifiez que la liste n'est pas vide avant de diviser : `moyenne = sum(notes) / len(notes) if notes else 0`.