Coding for KidsCoding for Kids
Kreative NiveauerUdfordringerLærervejledning
Stem på funktioner
Avanceret Python Udviklingskursus
Kapitel
>
Niveau

Undtagelseshåndtering
Flere undtagelser

Målsætning

Opsamle og korrekt opbevare nogle medicinske forsyninger i kasser ved at bruge flere undtagelser.

Lagerlokalerne på taget skal genopfyldes, nogle af forsyningerne blev brugt, men aldrig udskiftet. Der er afgivet en ordre på flere materialer i en note i et af lagerlokalerne, og det ville være en god idé at få det ordnet. Det skal dog bemærkes, at der er en række forskellige materialer, der skal samles og opbevares i kasser.

På grund af de forskellige datatyper og det antal materialer, der skal bruges til at fylde kasser, kan vi løbe ind i forskellige fejl. Vi kan bruge try / except til at fange mulige fejl og rette nogle problemer, men hvad sker der, når der opstår flere mulige fejl under en enkelt operation? For at håndtere dette kan vi specificere, hvilke undtagelser vi forsøger at fange, og bruge flere undtagelser.

For at starte, gå til det gyldne X-mærke og vend dig mod døren, brug funktionen open() for at komme ind i lagerlokalet. Når du er inde, gå til det mørke X-mærke og drej til højre for at bruge funktionen read() og tjekke, hvilke materialer og mængder der bliver bestilt i noten på bordet. Information om listekonstanter er skrevet i noten, inklusive forsyninger og deres bestillinger. Når du er færdig, gå til det lyse X-mærke inde i lagerlokalet, vend dig mod kassen og hent listekonstanten pads med materialerne ved at bruge funktionen collect(), sådan her: player.collect(pads) .

Inde i lagerlokalet er der lagre med "peroxide" og "isopropyl", så gå og samle dem alle, og tag derefter udenfor og gå til det mørke X-mærke over et lilla tæppe. På det lilla tæppe, mens du står vendt mod kassen, brug funktionen collect() til at hente "water bottle", fortsæt derefter til det mørke X-mærke over det gule tæppe og brug funktionen collect() til at hente "glass bottle".

Nu hvor varerne er samlet, er det tid til at opfylde ordren og placere alle materialerne inde i lagerlokalets kasser til højre. For at gøre dette vil vi først opbevare "water bottle", "peroxide" og "isopropyl" i en liste kaldet supplies. Ved de mørke X-mærker over de røde, grønne og blå tæpper vil vi bruge kasserne til at opbevare de medicinske forsyninger. Til dette vil vi oprette tre lister: blue_crate = [], green_crate = [] og red_crate = [].

Før du placerer alle varerne, skal vi fylde listerne med materialerne. Til dette vil vi bruge en løkke til at iterere gennem listerne og kombinere dem til én enkelt liste. Dette vil placere alle supplies i listen og fordele antallet af pads-elementer i henhold til order i noten i lagerlokalet.

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

På trods af dette vil du bemærke, at fejl opstår, selvom alt udføres korrekt og koden er solid. Men her er problemet: listen supplies har kun tre (3) elementer, men løkken kører fem (5) gange, hvilket medfører en Index Error. Desuden har listen pads ikke kun kun tre (3) elementer, men én af bestillingsværdierne er 0, og ethvert tal divideret med 0 medfører en Zero Division Error, da intet tal kan divideres med 0 i matematik.

Her er det, at flere undtagelser er nyttige. Vi bruger try / except kodeblokke til at fange fejlene og lade os fortsætte med koden. Da der opstår to fejl, skal vi identificere hver fejl for at kunne fange de specifikke undtagelser. Dette gøres ved at udvide except kodeblokkene således: except IndexError: og except ZeroDivisionError:. For eksempel:

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)

Index Error korrigeres ved at udfylde de manglende pladser i listen med "glass bottle", og Zero Division Error håndteres ved at tilføje værdien 0, hvis den ulovlige handling opstår.

Gør dette for listerne blue_crate = [], green_crate = [] og red_crate = []. Gå til det mørke X-mærke over tæpperne blue, green og red, og brug funktionen place() til at placere listerne i de tilsvarende kasser for at fuldføre niveauet.

Kodebog