Erreur N1 : IndexError - Index hors de portée
Le problème
L'IndexError se produit lorsque vous essayez d'accéder à un élément d'une liste, d'un tuple ou d'une chaîne qui n'existe pas.
my_list = [1, 2, 3]
print(my_list[5])
Pourquoi c'est une erreur
C'est une erreur courante et peut entraîner des comportements imprévisibles ou des erreurs fatales. Elle peut également rendre le débogage difficile si elle se produit dans une fonction ou un programme complexe.
La solution
Pour corriger cette erreur, vous pouvez ajouter une vérification de l'index avant d'y accéder.
my_list = [1, 2, 3]
if len(my_list) > 5:
print(my_list[5])
else:
print("Index out of range")
Comment prévenir
- Utilisez
len()pour vérifier la longueur de la liste avant d'y accéder. - Adoptez une pratique de code qui utilise des boucles
forplutôt que des indices directement, lorsque possible.
Erreur N2 : ValueError - Valeur incorrecte
Le problème
La ValueError se produit quand vous essayez d'appliquer une fonction ou un opérateur à un type de données inapproprié ou avec une valeur invalide.
int("abc")
Pourquoi c'est une erreur
Cela peut désorienter les utilisateurs et rendre le débogage difficile. De plus, cela peut entraîner des erreurs fatales si la fonction ne gère pas correctement cette situation.
La solution
Pour corriger cette erreur, vous pouvez ajouter une vérification de la valeur avant d'y appliquer la fonction.
def safe_int(input_string):
try:
return int(input_string)
except ValueError:
print("Invalid input")
return None
value = safe_int("abc")
Comment prévenir
- Utilisez des fonctions comme
isinstance()pour vérifier le type de données avant d'y appliquer une fonction. - Adoptez une pratique de code qui gère les exceptions et utilise des blocs
try-exceptpour traiter les erreurs.
Erreur N3 : KeyError - Clé manquante dans un dictionnaire
Le problème
La KeyError se produit lorsque vous essayez d'accéder à une clé qui n'existe pas dans un dictionnaire.
my_dict = {"a": 1, "b": 2}
print(my_dict["c"])
Pourquoi c'est une erreur
Cela peut entraîner des comportements imprévisibles ou des erreurs fatales. Elle peut également rendre le débogage difficile si elle se produit dans une fonction ou un programme complexe.
La solution
Pour corriger cette erreur, vous pouvez ajouter une vérification de la clé avant d'y accéder.
my_dict = {"a": 1, "b": 2}
if "c" in my_dict:
print(my_dict["c"])
else:
print("Key not found")
Comment prévenir
- Utilisez
inpour vérifier l'existence d'une clé dans un dictionnaire avant d'y accéder. - Adoptez une pratique de code qui utilise des méthodes comme
.get()sur les dictionnaires, qui renvoientNoneou une valeur par défaut si la clé n'existe pas.
Erreur N4 : AttributeError - Attribut non trouvé
Le problème
L'AttributeError se produit lorsque vous essayez d'accéder à un attribut ou une méthode qui n'existe pas dans un objet.
my_list = [1, 2, 3]
print(my_list.push(4))
Pourquoi c'est une erreur
Cela peut entraîner des comportements imprévisibles ou des erreurs fatales. Elle peut également rendre le débogage difficile si elle se produit dans une fonction ou un programme complexe.
La solution
Pour corriger cette erreur, vous pouvez vérifier l'existence de l'attribut avant d'y accéder.
my_list = [1, 2, 3]
if hasattr(my_list, "push"):
my_list.push(4)
else:
print("Attribute not found")
Comment prévenir
- Utilisez
hasattr()pour vérifier l'existence d'un attribut avant d'y accéder. - Adoptez une pratique de code qui utilise des méthodes spécifiques à la classe, plutôt que des attributs non existants.
Erreur N5 : TypeError - Type incorrect
Le problème
La TypeError se produit lorsque vous essayez d'appliquer une opération ou une fonction à un type de données inapproprié.
result = 10 + "20"
Pourquoi c'est une erreur
Cela peut entraîner des comportements imprévisibles ou des erreurs fatales. Elle peut également rendre le débogage difficile si elle se produit dans une fonction ou un programme complexe.
La solution
Pour corriger cette erreur, vous pouvez vérifier le type de données avant d'y appliquer l'opération.
result = 10 + int("20")
Comment prévenir
- Utilisez des fonctions comme
isinstance()pour vérifier le type de données avant d'y appliquer une opération. - Adoptez une pratique de code qui gère les exceptions et utilise des blocs
try-exceptpour traiter les erreurs.
Erreur N6 : RecursionError - Appel récursif infini
Le problème
La RecursionError se produit lorsque vous avez une fonction qui appelle elle-même de manière infinie, entraînant un dépassement de la profondeur maximale d'appels récursifs.
def infinite_recursion():
return infinite_recursion()
Pourquoi c'est une erreur
Cela peut entraîner des comportements imprévisibles ou des erreurs fatales. Elle peut également rendre le débogage difficile si elle se produit dans une fonction complexe.
La solution
Pour corriger cette erreur, vous devez identifier la condition qui cause l'appel récursif infini et la corriger.
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
Comment prévenir
- Utilisez des conditions de base pour arrêter les appels récursifs.
- Adoptez une pratique de code qui utilise des boucles plutôt que des fonctions récursives pour certaines tâches.
Erreur N7 : MemoryError - Erreur de mémoire
Le problème
La MemoryError se produit lorsque votre programme essaie d'allouer plus de mémoire qu'il n'en a disponible.
large_list = [i for i in range(10**10)]
Pourquoi c'est une erreur
Cela peut entraîner des comportements imprévisibles ou des erreurs fatales. Elle peut également rendre le débogage difficile si elle se produit dans un programme complexe.
La solution
Pour corriger cette erreur, vous devez identifier la partie du code qui consomme beaucoup de mémoire et la corriger.
large_list = []
for i in range(10**10):
large_list.append(i)
Comment prévenir
- Utilisez des structures de données optimisées pour la mémoire.
- Adoptez une pratique de code qui utilise des itérateurs plutôt que des listes pour certaines tâches.
Erreur N8 : ZeroDivisionError - Division par zéro
Le problème
La ZeroDivisionError se produit lorsque vous essayez de diviser un nombre par zéro.
result = 10 / 0
Pourquoi c'est une erreur
Cela peut entraîner des comportements imprévisibles ou des erreurs fatales. Elle peut également rendre le débogage difficile si elle se produit dans une fonction complexe.
La solution
Pour corriger cette erreur, vous pouvez vérifier que le diviseur est non nul avant d'y appliquer l'opération.
result = 10 / (5 if 5 != 0 else 1)
Comment prévenir
- Utilisez des conditions pour vérifier que le diviseur est non nul.
- Adoptez une pratique de code qui gère les exceptions et utilise des blocs
try-exceptpour traiter les erreurs.
Erreur N9 : NameError - Nom non défini
Le problème
La NameError se produit lorsque vous essayez d'utiliser un nom de variable, de fonction ou de module qui n'est pas défini.
print(x)
Pourquoi c'est une erreur
Cela peut entraîner des comportements imprévisibles ou des erreurs fatales. Elle peut également rendre le débogage difficile si elle se produit dans un programme complexe.
La solution
Pour corriger cette erreur, vous devez définir la variable avant d'y accéder.
x = 10
print(x)
Comment prévenir
- Utilisez des IDE qui offrent une aide à l'auto-complétion et une vérification de syntaxe.
- Adoptez une pratique de code qui utilise des variables locales plutôt que des noms globaux.
Erreur N10 : SyntaxError - Erreur de syntaxe
Le problème
La SyntaxError se produit lorsque vous essayez d'écrire un code Python invalide.
def my_function()
print("Hello, World!")
Pourquoi c'est une erreur
Cela peut entraîner des comportements imprévisibles ou des erreurs fatales. Elle peut également rendre le débogage difficile si elle se produit dans un programme complexe.
La solution
Pour corriger cette erreur, vous devez vérifier la syntaxe de votre code et l'ajuster si nécessaire.
def my_function():
print("Hello, World!")
Comment prévenir
- Utilisez des IDE qui offrent une aide à l'auto-complétion et une vérification de syntaxe.
- Adoptez une pratique de code qui utilise un style de codage standard comme PEP 8.
Erreur N11 : IndentationError -Erreur d'indentation
Le problème
LIndentationError se produit lorsque vous essayez d'écrire un code Python invalide en raison de problèmes d'indentation.
if True:
print("Hello, World!")
Pourquoi c'est une erreur
Cela peut entraîner des comportements imprévisibles ou des erreurs fatales. Elle peut également rendre le débogage difficile si elle se produit dans un programme complexe.
La solution
Pour corriger cette erreur, vous devez vérifier l'indentation de votre code et la corriger.
if True:
print("Hello, World!")
Comment prévenir
- Utilisez des IDE qui offrent une aide à l'auto-complétion et une vérification de syntaxe.
- Adoptez une pratique de code qui utilise un style de codage standard comme PEP 8.
Erreur N12 : TabError -Erreur de tabulation
Le problème
La TabError se produit lorsque vous essayez d'écrire un code Python invalide en raison de problèmes de tabulations.
if True:
print("Hello, World!")
Pourquoi c'est une erreur
Cela peut entraîner des comportements imprévisibles ou des erreurs fatales. Elle peut également rendre le débogage difficile si elle se produit dans un programme complexe.
La solution
Pour corriger cette erreur, vous devez vérifier les tabulations de votre code et la corriger.
if True:
print("Hello, World!")
Comment prévenir
- Utilisez des IDE qui offrent une aide à l'auto-complétion et une vérification de syntaxe.
- Adoptez une pratique de code qui utilise un style de codage standard comme PEP 8.