Coding for KidsCoding for Kids
Niveaux CréatifsDéfisGuide de l'Enseignant
Voter pour les fonctionnalités
Cours avancé de développement Python
Chapitre
>
Niveau

Gestion des Exceptions
Exceptions multiples

Objectif

Collecter et stocker correctement certaines fournitures médicales dans des caisses en utilisant plusieurs exceptions.

Les entrepôts sur le toit doivent être réapprovisionnés, certaines fournitures ont été utilisées mais jamais remplacées. Une commande a été passée pour plus de matériaux, mentionnée dans une note dans l'une des réserves, il serait judicieux de s'en occuper. Cela dit, il existe une variété de matériaux différents qui doivent être rassemblés et stockés dans des caisses.

En raison des différents types de données et du nombre de matériaux nécessaires pour remplir les caisses, nous pouvons rencontrer diverses erreurs. Nous pouvons utiliser try / except pour intercepter toutes les erreurs possibles et résoudre certains problèmes, mais que se passe-t-il lorsqu'il y a plusieurs erreurs possibles que vous pouvez rencontrer dans une seule opération ? Pour y remédier, nous pouvons spécifier quelles exceptions nous souhaitons intercepter et utiliser plusieurs exceptions.

Pour commencer, marchez jusqu'à la marque X dorée et faites face à la porte, utilisez la fonction open() pour entrer dans la réserve. Une fois à l'intérieur, marchez jusqu'à la marque X sombre et tournez à droite pour utiliser la fonction read() et vérifier quels matériaux et quelles quantités sont commandés dans la note déposée sur la table. Des informations sur les constantes de liste sont écrites dans la note, incluant les fournitures et leur commande. Une fois terminé, marchez jusqu'à la marque X claire à l'intérieur de la réserve, tournez-vous vers la caisse et récupérez la constante de liste pads contenant les matériaux à l'intérieur en utilisant la fonction collect(), comme ceci: player.collect(pads) .

À l'intérieur du magasin, il y a des réserves de "peroxide" et "isopropyl", marchez et récupérez-les tous, puis sortez et dirigez-vous vers la marque X sombre sur un tapis violet. Sur le tapis violet, en vous tournant vers la caisse, utilisez la fonction collect() pour récupérer "water bottle", avancez vers la marque X sombre sur le tapis jaune et utilisez la fonction collect() pour récupérer "glass bottle".

Maintenant que les articles ont été collectés, il est temps de remplir la commande et de placer tous les matériaux à l'intérieur des caisses de l'entrepôt sur la droite. Pour cela, nous allons d'abord stocker "water bottle", "peroxide" et "isopropyl" dans une liste nommée supplies. Aux marques X sombres sur les tapis red, green et blue, nous utiliserons les caisses pour stocker les fournitures médicales. Pour cela, nous allons créer trois listes: blue_crate = [], green_crate = [] et red_crate = [].

Avant de placer tous les articles, nous devons remplir toutes les listes avec les matériaux. Pour cela, nous allons utiliser une boucle pour itérer à travers les listes et les combiner en une seule liste. Cela placera tous les supplies dans la liste et divisera le nombre d'articles pads selon la order indiquée dans la note de la réserve.

for x in range(5): blue_crate.append(supplies[x]) blue_crate.append(pads[x]/order[x])

Malgré cela, vous remarquerez que des erreurs apparaîtront, même si tout est fait correctement et que le code est fiable. Toutefois, voici le problème: la liste supplies ne contient que trois (3) éléments, mais la boucle s'exécute cinq (5) fois, provoquant une Index Error. Par ailleurs, la liste pads ne contient pas seulement trois (3) éléments, mais l'une des valeurs de order est également 0; tout nombre divisé par 0 provoque une Zero Division Error car aucun nombre ne peut être divisé par 0 en mathématiques.

C'est ici que les exceptions multiples sont utiles. Nous utilisons les blocs de code try / except pour intercepter les erreurs et nous permettre de poursuivre l'exécution du code. Étant donné que deux erreurs se produisent, nous devons identifier chacune d'elles afin d'intercepter les exceptions spécifiques. Cela se fait en développant les blocs except de cette manière: except IndexError: et except ZeroDivisionError:. Par exemple:

for x in range(5): try: blue_crate.append(supplies[x]) blue_crate.append(pads[x]/order[x]) except IndexError: blue_crate.append("glass bottle") except ZeroDivisionError: blue_crate.append(0)

L'erreur Index Error est corrigée en remplissant les espaces manquants dans la liste avec "glass bottle" et l'erreur Zero Division Error est résolue en ajoutant une valeur de 0 si l'action illégale se produit.

Faites cela pour les listes blue_crate = [], green_crate = [] et red_crate = []. Marchez jusqu'à la marque X sombre sur les tapis blue, green et red et utilisez la fonction place() pour stocker les listes dans les caisses correspondantes afin de compléter le niveau.

Livre de Code