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

Undtagelseshåndtering
Brugerdefinerede undtagelser

Mål

Brug brugerdefinerede undtagelser til at samle beskeder med produktordrer og sende dem ud via brevduer.

Nogle beskeder er udstationeret på tværs af gården og andre stationer via budduer, det ville være en god idé at sende et par for at komme foran tidsplanen. Vi har fanget fejl ved at bruge almindelige undtagelser, men nogle gange kan det betale sig at lave dine egne brugerdefinerede undtagelser til meget specifikke scenarier. Vi vil skaffe beskeder og udvælge duer ved at identificere de korrekte elementer ved hjælp af vores helt egne brugerdefinerede undtagelser.

Brugerdefinerede undtagelser bliver sammensat ved at oprette klasser. Ved at tilføje (Exception)-klausulen kan du omlægge en klasse til at håndtere undtagelser. Til vores formål vil vi oprette to: InvalidLocation, som aktiveres, når en specifik streng ikke består verifikationen, og UnsuitableSelection, som bruges til at tjekke, om et tal overskrider en bestemt tærskel.

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

Nu hvor klasserne er sat op, er det tid til at hente notaterne, så de kan sendes ud. Opret en liste ved navn prep for at gemme og kombinere de komponenter, der er nødvendige for den kommende udveksling. Gå til det mørke X-mærke over det røde tæppe, på rækken af borde med X-mærker foran, hvor vi vil søge efter notater, der har ordrer sendt til den vestlige sektor af gården.

Der er fire variable konstanter, der bruges i dette afsnit: red_memo, blue_memo, green_memo og orange_memo. Kun notater, der er markeret til at blive leveret til "west" sektoren, skal samles, så de kan sendes ud. For at afgøre, om vi skal tage notatet eller ej, vil vi bruge try/except og else kodeblokke i kombination med den brugerdefinerede undtagelse InvalidLocation. For at bruge den brugerdefinerede undtagelse skal try-blokken kontrollere, om notatet er mærket "west", og hvis det ikke er, skal undtagelsen løftes. except-blokken bekræfter, at notatet er ugyldigt, og else-blokken indsamler og tilføjer notatet til prep-listen, hvis det viser sig at være sendt til "west" sektoren. For eksempel:

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)

Gå til hvert af de mørke X-mærker over de farvede tæpper foran bordene og kør undtagelsessekvensen ved at bruge de korrekte variable konstanter, der svarer til hver farve.

Når du har samlet notaterne, skal du gå til det gyldne X-mærke foran døren og bruge funktionen open() for at få adgang til duerbaret. Når du er inde, gå til det lyse X-mærke, vend om, og brug funktionen close() for at lukke døren, så der ikke slipper duer ud.

Gå til det mørke X-mærke over det lilla tæppe, på buret hvor vi skal verificere, om duen er gammel nok til at flyve med en besked, eller om det er en kylling, der ikke er i stand til at foretage en levering. Der er fire yderligere variable konstanter, der skal bruges i dette afsnit: purple_pen, yellow_pen, white_pen og pink_pen, som svarer til hvert farvet tæppe. Vi vil bruge den samme teknik som med notaterne, ved at anvende den anden klasse, der blev sat op.

Brug try/except og else kodeblokke med den brugerdefinerede undtagelse UnsuitableSelection for at afgøre, om duen er gammel nok til at foretage leveringen. try-blokken kontrollerer, om den variable konstant, der repræsenterer buret, har en passende due ved at tjekke, om fuglen er yngre end to (2) år. Hvis duen er uegnet, aktiveres except-blokken, ellers aktiveres else-blokken, hvilket gør det muligt for dig at tilføje en due til prep-listen, så den kan levere beskeden.

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

Gå til hvert mørke X-mærke over de farvede tæpper og brug denne sekvens med den korrekte variable konstant, der svarer til det pågældende farvede tæppe. Når du har samlet duer og beskeder, skal du gå til det gyldne X-mærke for nederst og bruge funktionen place() med den prep-liste, du har oprettet, for at sende duerne af sted for at levere beskeder og fuldføre niveauet.

Kodebog