Coding for KidsCoding for Kids
Creatieve LevelsUitdagingenLerarengids
Stem op functies
Gevorderde Python-ontwikkelingscursus
Hoofdstuk
>
Niveau

Uitzonderingsafhandeling
Aangepaste uitzonderingen

Doelstelling

Gebruik aangepaste uitzonderingen om berichten met productbestellingen te verzamelen en te verzenden via postduif.

Sommige berichten worden over de boerderij en andere stations verspreid via boodschapperduif, het zou een goed idee zijn er een paar te versturen om voor te blijven op schema. We hebben fouten opgevangen met behulp van gewone uitzonderingen, maar soms kan het voordelig zijn om je eigen aangepaste uitzonderingen te maken voor zeer specifieke scenario's. We gaan berichten ophalen en duiven selecteren door de juiste items te identificeren met onze eigen aangepaste uitzonderingen.

Aangepaste uitzonderingen worden samengesteld door het aanmaken van klassen. Door de (Exception) clausule toe te voegen, kun je een klasse hergebruiken voor het afhandelen van uitzonderingen. Voor onze doeleinden maken we er twee: InvalidLocation, dat geactiveerd wordt wanneer een specifieke string niet aan de vereisten voldoet, en UnsuitableSelection, dat wordt gebruikt om te controleren of een nummer een bepaalde drempel overschrijdt.

class InvalidLocation(Exception): "Raised when location is invalid" pass class UnsuitableSelection(Exception): "Raised when pidgeon is 2 or younger" pass

Nu de klassen zijn ingesteld, is het tijd om de memo's op te halen zodat ze verstuurd kunnen worden. Maak een lijst genaamd prep om de componenten voor de komende uitwisseling op te slaan en te combineren. Loop naar het donkere X-teken boven het rode tapijt; op de rij tafels met X-tekens aan de voorkant gaan we op zoek naar memo's die bestemd zijn voor het westelijke deel van de boerderij.

Er zijn vier variabele constanten die in dit segment worden gebruikt: red_memo, blue_memo, green_memo en orange_memo. Alleen memo's die bestemd zijn voor levering in het "west"-gebied mogen verzameld worden zodat ze verstuurd kunnen worden. Om te bepalen of we een memo meenemen, gebruiken we try/except en else codeblokken in combinatie met de InvalidLocation aangepaste uitzondering. In de try controleren we of de memo gelabeld is met "west" en zo niet, roepen we de uitzondering op. Het except blok bevestigt dat de memo ongeldig is en het else blok verzamelt en voegt de memo toe aan de prep lijst, mits blijkt dat deze bestemd is voor het "west"-gebied. Bijvoorbeeld:

try: if red_memo != "west": raise InvalidLocation except InvalidLocation: player.speak("This is not an order that needs to be sent out") else: player.collect(red_memo) prep.append(red_memo)

Loop naar elk van de donkere X-tekens boven de gekleurde tapijten voor de tafels en voer de uitzonderingssequentie uit met de juiste variabele constanten voor elke kleur.

Zodra je de memo's hebt verzameld, loop je naar het gouden X-teken voor de deur en gebruik je de open() functie om toegang te krijgen tot de duiventil. Eenmaal binnen loop je naar het lichte X-teken, draai om en gebruik de close() functie om de deur te sluiten zodat er geen duiven ontsnappen.

Loop naar het donkere X-teken op het paarse tapijt; bij de pennen gaan we verifiëren of de duif oud genoeg is om een bericht te bezorgen of dat het een kuiken is dat niet in staat is een levering te doen. Er zijn vier variabele constanten die in dit segment worden gebruikt: purple_pen, yellow_pen, white_pen en pink_pen, overeenkomstig met elk gekleurd tapijt. We gebruiken dezelfde techniek als bij de memo's, met behulp van de tweede klasse die we hebben ingesteld.

Gebruik de try/except en else codeblokken met de UnsuitableSelection aangepaste uitzondering om te bepalen of de duif oud genoeg is om de levering te doen. Het try blok controleert of de variabele constante die de pen vertegenwoordigt een geschikte duif bevat door te verifiëren of de vogel jonger is dan twee (2) jaar. Als de duif ongeschikt is, wordt het except blok geactiveerd, anders wordt het else blok uitgevoerd, zodat je de duif aan de prep lijst kunt toevoegen om de boodschap te bezorgen.

try: if purple_pen <= 2: raise UnsuitableSelection except UnsuitableSelection: player.speak("Pigeon unsuitable to deliver") else: prep.append(purple_pen) player.speak("Pigeon Collected")

Ga naar elk donkere X-teken op de gekleurde tapijten en gebruik deze sequentie met de juiste variabele constante die overeenkomt met het betreffende gekleurde tapijt. Zodra je de duiven en memo's hebt verzameld, loop je naar het gouden X-teken helemaal onderaan en gebruik je de place() functie met de prep lijst die je hebt aangemaakt om de duiven te laten vertrekken en berichten te bezorgen, waarmee je het level voltooit.

Codeboek