Coding for KidsCoding for Kids
Luovat TasotHaasteetOpettajan Opas
Äänestä ominaisuuksia
Edistynyt Python-kehityskurssi
Luku
>
Taso

Poikkeusten käsittely
Mukautetut poikkeukset

Tavoite

Käytä mukautettuja poikkeuksia kerätäksesi viestejä tuote tilauksista ja lähettääksesi ne kyyhkynen välityksellä.

Joidenkin viestien lähettämiseksi maatilalla ja muilla asemilla käytetään viestikyyhkysiä, joten olisi hyvä idea lähettää joitakin etukäteen. Olemme kiinni virheissä yleisten poikkeusten avulla, mutta joskus voi olla hyödyllistä luoda omia mukautettuja poikkeuksia hyvin tiettyjä tilanteita varten. Aiomme kerätä viestejä ja valita kyyhkysiä tunnistamalla oikeat kohteet täysin omien mukautettujen poikkeustemme avulla.

Mukautetut poikkeukset rakennetaan luomalla luokkia, ja lisäämällä (Exception)-lause, voit käyttää luokkaa poikkeusten käsittelyyn. Tarpeisiimme luomme kaksi: InvalidLocation, joka aktivoituu, kun tietty merkkijono ei läpäise tarkistusta, ja UnsuitableSelection, jota käytetään tarkistamaan, ylittääkö numero tietyn rajan.

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

Nyt kun luokat on asetettu, on aika hakea muistiot, jotta ne voidaan lähettää. Luo lista nimeltä prep tallentaaksesi ja yhdistääksesi ne komponentit, joita tarvitaan tulevaa vaihtoasi varten. Kävele punaisen maton päällä olevan tumman X-merkin luota, ja etsi pöytien edessä olevilta X- merkeiltä muistiot, joilla on tilauksia lähetettäväksi maatilan länsiosaan.

Tässä osassa käytetään neljää vakio muuttujaa: red_memo, blue_memo, green_memo ja orange_memo. Vain ne muistiot, jotka on merkitty toimitettavaksi sektorille "west", kerätään, jotta ne voidaan lähettää. Määrittääksesi, otetaanko muistio vai ei, käytämme try/except ja else-koodilohkoja yhdessä InvalidLocation-mukautetun poikkeuksen kanssa. Käytä mukautettua poikkeusta siten, että try-lohko tarkistaa, onko muistio merkitty "west" ja muuten nostaa poikkeuksen. Except-lohko vahvistaa, että muistio on virheellinen, ja else-lohko kerää ja lisää muiston prep-listaan, jos se osoittautuu kuuluvaksi sektorille "west". Esimerkiksi:

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)

Kävele jokaisen tumman X-merkin luo värimattojen päällä pöytien edessä ja suorita poikkeussekvenssi käyttämällä kullekin värille vastaavia vakioita.

Kun olet kerännyt muistiot, kävele oven edessä olevan kultaisen X-merkin luo ja käytä open()-funktiota päästäksesi kyyhkyjen pesiin. Kun olet sisällä, kävele valoisan X-merkin luo, käänny ympäri ja käytä close()-funktiota sulkeaksesi oven varmistaaksesi, että kyyhkysiä ei pääse karkuun.

Kävele tumman X-merkin luo violetin maton päällä, sillä penneillä tarkistamme, onko kyyhkynen tarpeeksi vanha viestin kantamiseen vai onko se vasta poikanen, joka ei kykene toimittamaan viestiä. Tässä osassa käytetään neljää lisävakio muuttujaa: purple_pen, yellow_pen, white_pen ja pink_pen, jotka vastaavat kutakin värimattoa. Käytämme samaa tekniikkaa kuin muistioden kanssa, hyödyntäen toista asetettua luokkaa.

Käytä try/except ja else-koodilohkoja yhdessä UnsuitableSelection-mukautetun poikkeuksen kanssa tunnistaaksesi, onko kyyhkynen tarpeeksi vanha viestin toimittamiseen. Try-lohko tarkistaa, onko kyseisen penin muuttuja edustamassa sopivaa kyyhkystä tarkistamalla, onko lintu alle kaksi (2) vuotta vanha. Jos kyyhkynen ei kelpaa, except-lohko aktivoituu, muuten else-lohko aktivoituu ja kyyhkynen lisätään prep-listaan viestin lähettämistä varten.

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

Mene jokaiselle tumman X-merkin luo värimattojen päällä ja käytä tätä sekvenssiä oikealla vakio muuttujalla, joka vastaa kyseistä värimattoa. Kun olet kerännyt kyyhkysiä ja viestejä, kävele alimpaan kultaisen X-merkin kohdalle ja käytä place()-funktiota käyttäen luomaasi prep-listaa lähettääksesi kyyhkysiä toimittamaan viestit ja suorittamaan tason.

Koodikirja