Identifiez instantanément pourquoi votre variable python est vide et apprenez à corriger votre code proprement grâce à l'erreur Python 'TypeError: NoneType object is not subscriptable.
1. TypeError: 'NoneType' object is not subscriptable
- Cause : Vous essayez d'accéder à un index (ex:
liste[0]) sur une variable qui vaut None (souvent car une fonction n'a rien renvoyé). - Code qui bug :
- Python
def ma_liste():
print("Salut") # Oubli du 'return'
resultat = ma_liste()
print(resultat[0]) # Erreur !
- Correction : Ajoutez un
return ou vérifiez que la variable n'est pas vide avant. - Astuce Pro : Utilisez
if resultat is not None: avant d'accéder aux données.
2. IndexError: list index out of range
- Cause : Vous demandez un élément à une position qui n'existe pas dans la liste.
- Code qui bug :
- Python
prenoms = ["Alice", "Bob"]
print(prenoms[2]) # Erreur (l'index 2 est le 3ème élément)
- Correction : Rappelez-vous que Python commence à compter à 0. Pour 2 éléments, les index sont 0 et 1.
- Astuce Pro : Utilisez
len(ma_liste) pour vérifier la taille avant de chercher.
3. KeyError: '...'
- Cause : Vous cherchez une clé inexistante dans un dictionnaire.
- Code qui bug :
- Python
scores = {"Alice": 10}
print(scores["Bob"]) # Erreur !
- Correction : Utilisez la méthode
.get() qui renvoie None au lieu de planter. - Astuce Pro :
scores.get("Bob", 0) renverra 0 si "Bob" n'existe pas.
4. IndentationError: expected an indented block
- Cause : Python utilise les espaces pour définir les blocs. Il en manque un après un
: ou ils sont mal alignés. - Code qui bug :
- Python
if True:
print("Oubli d'espace") # Erreur !
- Correction : Ajoutez 4 espaces (ou une tabulation) après chaque instruction se terminant par
:. - Astuce Pro : Configurez votre éditeur pour convertir les tabs en 4 espaces.
5. ValueError: invalid literal for int()
- Cause : Tentative de convertir du texte non numérique en nombre.
- Code qui bug :
- Python
age = int("vingt") # Erreur !
- Correction : Vérifiez le contenu avec
.isdigit() avant la conversion. - Astuce Pro : Utilisez un bloc
try...except ValueError: pour gérer la saisie utilisateur.
6. AttributeError: 'NoneType' has no attribute '...'
- Cause : Vous appelez une méthode (ex:
.append()) sur une variable qui n'a pas été initialisée (vaut None). - Code qui bug :
- Python
liste = None
liste.append(1) # Erreur !
- Correction : Initialisez toujours vos variables :
liste = [].
7. ModuleNotFoundError: No module named '...'
- Cause : La bibliothèque n'est pas installée sur votre ordinateur.
- Code qui bug :
import requests (si non installé). - Correction : Tapez
pip install requests dans votre terminal.
8. SyntaxError: invalid syntax
- Cause : Une faute de frappe (parentèse oubliée,
: manquant, faute dans un mot-clé). - Code qui bug :
if x = 5: (on utilise == pour comparer). - Correction : Relisez la ligne pointée par la flèche
^ de Python.
9. NameError: name 'x' is not defined
- Cause : Vous utilisez une variable que vous n'avez pas encore créée ou une faute de frappe dans son nom.
- Code qui bug :
print(score) au lieu de print(scores). - Correction : Vérifiez l'orthographe et l'ordre de vos lignes.
10. RecursionError: maximum depth exceeded
- Cause : Une fonction s'appelle elle-même sans jamais s'arrêter.
- Code qui bug :
- Python
def infini():
return infini()
- Correction : Ajoutez une "condition de sortie" (un
if qui arrête les appels).