3. Gestion des bugs
1) Erreurs les plus courantes en Python
Lors de l'écriture de code Python, vous ferez fréquemment des erreurs, qui vous serons «gentiment» rappelées par l'interpréteur Python à l'exécution du code.
Type d'erreur | Objet Python | Erreurs courantes | Exemple |
Erreur de syntaxe |
| Erreur de parenthèse, : manquant avant un bloc d'instruction.... |
|
Erreurs d'indexation |
| Accès à un index non présent dans une liste. Accès à un index non présent dans une liste, ou un tuple, str... |
|
Erreurs de nom |
| Nom de fonction ou de variable mal orthographié. |
|
Erreurs d'indentation |
| Indentation oubliée, ou trop grande, les blocs sont alors mal délimités. | |
Erreurs de type |
| Opération impossible entre deux types(str - int). Conversion de type impossible. |
|
En général ces erreurs nécessitent de modifier le code pour corriger le «bug».
Parfois ces erreurs "sont prévues" et nécessitent d'être gérées sans arrêter complètement le programme.
Gestion des exceptions avec try : ... except ...
Prenons l'exemple de la gestion d'une entrée utilisateur (on a dit qu'« il fallait s'attendre à tout ... »
)
Vous demandez l'âge d'une personne et vous attendez un entier pour vérifier son accès.
Il faut lui reposer la question jusqu'à ce qu'il rentre une valeur conforme à nos attentes.
Ouvrez Spyder (ou un autre environnement de développement), saisissez les extraits de code suivants et testez le fonctionnement.
age = int(input("Quel âge avez-vous? "))
if age >= 13:
print("Vous pouvez vous inscrire")
else:
print("Les réseaux sociaux sont interdits aux moins de 13 ans.")
Si l'utilisateur répond "seize ans
", vous obtenez le message d'erreur suivant :
try:
age = int(input("Quel âge avez-vous? "))
except ValueError:
print("Veuillez entrer votre âge sous forme de chiffres")
Le programme ne renvoie plus d'erreurs et ne s'arrête pas. On peut continuer à demander l'âge sans relancer le programme.
Quel âge avez-vous? treize ans
Veuillez entrer votre âge sous forme de chiffres
Un while
peut permettre de reposer la question en cas de besoin.
age = None
while not age:
try:
age = int(input("Quel âge avez-vous? "))
except ValueError:
print("Veuillez entrer votre âge sous forme de chiffres")
# on est sur d'avoir un age entier ici
if age >= 13:
print("Vous pouvez vous inscrire")
else:
print("Les réseaux sociaux sont interdits aux moins de 13 ans.")
Voici un exemple d'interaction avec ce programme.
Quel âge avez-vous? treize ans
Veuillez entrer votre âge sous forme de chiffres
Quel âge avez-vous? 13.5
Veuillez entrer votre âge sous forme de chiffres
Quel âge avez-vous? 13
Vous pouvez vous inscrire