Les erreurs à éviter
Syntaxe : L'indentation
for i in range(5):
# Ce code est dans la boucle FOR et sera exécuté 5 fois
print(i)
# Ce code n'est pas dans la boucle FOR et sera exécuté 1 fois
print('Au revoir')
On ne le répétera jamais assez, mais en Python, votre code doit être indenté.
Cela signifie que lorsqu'un morceau de code rentre dans une instruction (ici une boucle FOR), vous devez décaler ce morceau du bord gauche. En pratique, on le décale en utilisant 4 espaces ou une tabulation (via la touche Tab). C'est à partir d'aujourd'hui que cette touche va vous être très utile, alors évitez de la démonter de vos claviers.
Et cette touche, en plus de décaler le texte vers la droite, peut aussi le décaler vers la gauche grâce au raccourci Maj+Tab !
for i in range(5):
print(i)
Ainsi, le code ci-dessus est erroné car aucune instruction ne se trouve dans la boucle FOR. Python va donc planter et renvoyer l'erreur :
IndentationError: expected an indented block after 'for' statement on line 1
Syntaxe : Choix de la variable
i = 3
for j in range(8):
for k in range(3):
print(i, j, k)
Lorsque l'on crée une boucle FOR, il est très important de réfléchir au nom de la variable de boucle.
Une erreur classique consiste à utiliser le même nom qu'une variable déjà existante. Cela aura pour effet de supprimer l'ancienne valeur associée à la variable déjà utilisée, et peut causer un bug dans le programme.
i = 2
x = 1
for i in range(10):
x = x + 1
print(i) # 9
Alors que i
valait 3, le code ci-dessus a changé la valeur de i
alors que le développeur ne le souhaitait pas forcément. Il aurait été judicieux d'appeler sa variable de boucle j
par exemple (ligne 3).
Syntaxe : Initialiser ses variables
somme = 0
for i in range(5):
somme = somme + i
print(somme)
Comme on peut le voir, ce programme ci-dessus affiche la somme des nombres de 0 à 4.
for i in range(5):
somme = somme + i
# ^^^^^ Variable non initialisée
print(somme)
Cette version est quasiment indentique, à part le fait que la variable somme
n'a pas été initialisée. Même si pour nous le 0 semble être la valeur par défaut, Python ne peut pas le deviner et vous renverra l'erreur suivante : NameError: name 'somme' is not defined
Il est donc très important d'initialiser les variables avant de les récupérer pour faire des calculs.
Attention : Modifier la variable de boucle
for i in range(31):
i = 2 * i
print(i)
Contrairement à ce que l'on pourrait penser, le code ci-dessus ne va pas afficher 0, 2, 6, 14, 30 mais va afficher les nombres pairs de 0 à 60.
En effet, malgré la modification de i dans la boucle, rien ne subsiste lors des répétitions suivantes. Il est d'usage de ne pas modifier la variable de boucle afin d'éviter toute confusion lors de la lecture du programme.