Coding for KidsCoding for Kids
Kreatív SzintekKihívásokTanári Útmutató
Szavazzon a funkciókra
Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint

Kivételkezelés
Kivételosztályok testreszabása

Célkitűzés

Ellenőrizd az összegyűjtött esővizet, és győződj meg róla, hogy megfelelően feldolgozva és átadva kerül, kivételosztályok testreszabásával.

A tetőkomplexum legvégén található egy esővízgyűjtő tartály, amelyből a vizet szűrik, és különböző célokra osztják el az épületben. Bizonyos szelep a felső falon szabályozza az áramló víznyomást, míg az utolsó raktárban több vízmelegítő található. A gépek működtetése kihívást jelenthet, de a hibakódok meghatározásával és a hatékony ellenintézkedések bevezetésével a működés egyszerűsíthető. Ezt úgy éred el, hogy testreszabott kivételosztályokat hozol létre az egyedi kivételekhez.

A kódszerkesztőben két testreszabott kivételosztály van definiálva, melyek használata létfontosságú lesz az esetleges gépészeti problémák elhárításához. Az első kivételt a víznyomás hibakeresésére hozták létre. Ezt szelepekkel együtt kell használni annak biztosítására, hogy a víz megfelelően áramoljon a komplexumba, vagy ha a nyomást módosítani kell. Attól függően, hogy a nyomás a 100 alatti vagy a 300 feletti értéket vesz fel, a kivétel más-más műveletet hajt végre, a nyomás pedig argumentumként kerül átadásra. Aktiváláskor egy egyedi felugró ablak jelenik meg hibakóddal és üzenettel.

class PressureError(Exception): def __init__(self, pressure, message="Water pressure is offset, pressure is: ", error_code=404): self.pressure = pressure self.message = message self.error_code = error_code super().__init__(self.message) async def __str__(self): await player.write("[Error: %s {%s %s}]" % (self.error_code , self.message, self.pressure)) if self.pressure < 100: return ("Valve has been closed") if self.pressure > 360: return ("Valve has been opened")

A második testreszabott kivételosztályt a vízmelegítők hőmérsékletének szabályozására tervezték. Ha a hőmérséklet túl alacsony vagy túl magas, akkor egy új hőmérsékletet kell argumentumként megadnod a hiba bekövetkezte utáni korrigáláshoz.

class TemperatureError(Exception): def __init__(self, temp, message="Temperature is not appropiate, enter new temperature: ", error_code=808): self.temp = temp self.message = message self.error_code = error_code super().__init__(self.message) async def __str__(self): await player.write("[Error: %s {%s %s}]" % (self.error_code , self.message, self.temp)) return ("Temperature Corrected")

A kezdéshez menj a zöld szőnyegen lévő világos X jelzéshez, és nézz szembe a szeleppel ellátott tartálynál, melyből négy (4) van, amelyek a tartályból pumpált víz nyomását szabályozzák. Négy (4) változó konstans létezik: green_pressure, red_pressure, blue_pressure és orange_pressure, melyek mindegyike az adott színű szőnyegekhez tartozó tartály nyomását tartalmazza.

Minden világos X jelzésnél használd a try/except és else kódrészlet sorrendeket annak ellenőrzésére, hogy az egyes tartályok nyomása megfelelő-e. Ha a nyomás 100 alatti, vagy ha 300 fölötti, emeld a testreszabott PressureError kivételt, és add át a nyomás értékét argumentumként. Aktiváláskor a kivétel hibakódot dob, és javítást hajt végre, ellenkező esetben az else ág fut le, megerősítve, hogy a tartály nyomása megfelelő. Például:

try: if green_pressure < 100 or green_pressure > 360: raise PressureError(green_pressure) except PressureError as x: player.speak(x) else: player.speak( "Pressure is appropriate" )

Ezt tedd meg minden világos X jelzésnél, a megfelelő színes szőnyegekhez tartozó változó konstansokat használva, és szükség szerint ellenőrizd vagy állítsd be a nyomásszelepeket.

Miután elkészültél, menj a arany X jelzéshez, és használd az open() függvényt, hogy hozzáférj a vízmelegítőt tartalmazó raktárhoz. Miután beléptél, menj a raktáron belüli arany X jelzéshez, és használd a read() függvényt a pulthoz ragasztott üzenet elolvasásához. Ez az üzenet információt ad arról, hogy mi az ideális hőmérséklet az egyes vízmelegítők esetében.

Miután megszerezted az egyes hőmérsékletekre vonatkozó információkat, menj a lila szőnyegen lévő sötét X jelzéshez, ahol a try/except és else kódszekvenciát fogjuk használni annak ellenőrzésére, hogy a vízmelegítők megfelelő hőmérsékleten működnek-e. További négy (4) változó konstans tartozik a színes szőnyegekhez: purple_temperature, yellow_temperature, pink_temperature és white_temperature.

A szekvenciában ellenőrizzük, hogy a hőmérséklet 100 alatti-e, és ha igen, emeljük a TemperatureError kivételt. Testreszabott kivételként egy argumentumot vár; ebben az esetben a memo által leolvasott hőmérsékletet kell megadnod, hogy a kivétel megfelelő ellenintézkedést tudjon végrehajtani a hiba korrigálására. Például:

try: if purple_temperature < 100: raise TemperatureError(120) except TemperatureError as x: player.speak(x) else: player.speak( "Temperature is ok" )

Ezt tedd meg minden vízmelegítőnél; minden X jelzésnél, miközben a melegítőkre nézel, futtasd le a szekvenciát a megfelelő színes szőnyegekhez tartozó változó konstansokkal a szint teljesítéséhez.

Kódkönyv