Les erreurs à éviter

SyntaxeL'indentation

1
for i in range(5):
2
    # Ce code est dans la boucle FOR et sera exécuté 5 fois
3
    print(i)
4
# Ce code n'est pas dans la boucle FOR et sera exécuté 1 fois
5
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 !

1
for i in range(5):
2
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 :

1
IndentationError: expected an indented block after 'for' statement on line 1

SyntaxeChoix de la variable

1
i = 3
2
for j in range(8):
3
    for k in range(3):
4
        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.

1
i = 2
2
x = 1
3
for i in range(10):
4
    x = x + 1
5
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).

SyntaxeInitialiser ses variables

1
somme = 0
2
for i in range(5):
3
    somme = somme + i
4
print(somme)

Comme on peut le voir, ce programme ci-dessus affiche la somme des nombres de 0 à 4.

1
for i in range(5):
2
    somme = somme + i
3
    #       ^^^^^ Variable non initialisée
4
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.

AttentionModifier la variable de boucle

1
for i in range(31):
2
    i = 2 * i
3
    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.