Coding for KidsCoding for Kids
Tahap KreatifCabaranPanduan Guru
Undi untuk ciri
Kursus Pembangunan Python Lanjutan
Bab
>
Tahap

Pengendalian Pengecualian
Menyesuaikan Kelas Pengecualian

Objektif

Sahkan air hujan yang dikutip dan pastikan ia diproses dan dipindahkan dengan betul dengan menyesuaikan kelas pengecualian.

Di hujung jauh kompleks bumbung terdapat sebuah tangki simpanan air hujan, air ini ditapis dan dipindahkan ke seluruh bangunan untuk pelbagai tujuan. Beberapa injap pada dinding atas mengawal tekanan air yang mengalir, sementara bilik simpanan terakhir menempatkan pelbagai pemanas air. Mengendalikan mesin boleh menjadi mencabar namun operasinya boleh dipermudahkan dengan merangka kod ralat dan menetapkan langkah balas yang berkesan. Ini dicapai dengan menyesuaikan kelas pengecualian yang anda cipta untuk pengecualian khusus anda.

Terdapat dua kelas pengecualian khusus yang disediakan dalam penyunting kod, keupayaan anda untuk menggunakannya akan sangat penting untuk menyelesaikan sebarang masalah mesin yang anda temui. Yang pertama adalah pengecualian untuk menyelesaikan masalah tekanan air. Ia dimaksudkan untuk digunakan bersama injap untuk memastikan air mengalir dengan betul ke dalam kompleks atau jika tekanan perlu diselaraskan. Bergantung sama ada tekanan adalah di bawah 100 atau melebihi 300, tindakan yang berbeza akan diambil oleh pengecualian tersebut; tekanan merupakan argumen yang mesti disediakan oleh pengguna. Setelah diaktifkan, satu tetingkap pop khas yang memaparkan kod ralat dan mesej akan dipaparkan.

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")

Kelas pengecualian khusus kedua adalah untuk mengawal suhu dalam pemanas air; jika suhu terlalu rendah atau terlalu tinggi, anda mesti memasukkan suhu baru sebagai argumen untuk membetulkan kesilapan sebaik sahaja ia berlaku.

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")

Untuk memulakan, berjalan ke tanda X cahaya di atas permaidani hijau dan hadap ke tangki dengan injap; terdapat empat (4) injap yang mengawal tekanan air yang dipam dari tangki simpanan. Terdapat empat (4) pemalar pembolehubah: green_pressure, red_pressure, blue_pressure dan orange_pressure, yang menyimpan tekanan setiap tangki permaidani yang sepadan dengan warnanya.

Pada semua tanda X cahaya tersebut, gunakan urutan blok kod try/except dan else untuk menyemak sama ada tekanan pada setiap tangki adalah sesuai. Jika tekanan adalah di bawah 100 atau jika ia melebihi 300, timbulkan pengecualian khusus PressureError dan masukkan tekanan sebagai argumen. Jika diaktifkan, ia akan memaparkan kod ralat dan melaksanakan pembetulan; jika tidak, klausa else akan diaktifkan untuk mengesahkan bahawa tekanan dalam tangki adalah sesuai. Sebagai contoh:

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" )

Lakukan ini pada semua tanda X cahaya, menggunakan pemalar pembolehubah yang sepadan dengan setiap permaidani berwarna dan sama ada menyemak atau menyesuaikan injap tekanan yang diperlukan.

Setelah itu, berjalan ke tanda X emas dan gunakan fungsi open() untuk mengakses bilik simpanan dengan pemanas air. Setelah berada di dalam, berjalan ke tanda X emas yang terletak di dalam bilik simpanan dan gunakan fungsi read() untuk membaca nota pada kaunter. Nota ini akan memberikan anda maklumat mengenai suhu ideal bagi setiap pemanas air.

Setelah anda mendapatkan maklumat mengenai setiap suhu, berjalan ke tanda X gelap di atas permaidani ungu. Di sini, kita akan menggunakan urutan kod try/except dan else untuk menyemak sama ada pemanas air mempunyai suhu yang betul. Terdapat empat (4) lagi pemalar pembolehubah yang berkaitan dengan permaidani berwarna: purple_temperature, yellow_temperature, pink_temperature dan white_temperature.

Dalam urutan ini, kita akan menyemak sama ada suhu adalah di bawah 100; jika ya, kita akan menimbulkan pengecualian TemperatureError. Sebagai pengecualian khusus, ia mengambil argumen, dalam kes ini anda mesti memasukkan suhu yang dibaca dalam nota untuk melaksanakan langkah pembetulan pengecualian dengan betul. Sebagai contoh:

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

Lakukan ini bagi semua pemanas air. Pada setiap tanda X semasa menghadap pemanas, jalankan urutan tersebut dengan menggunakan pemalar pembolehubah yang sepadan dengan permaidani berwarna yang betul untuk menyiapkan tahap ini.

Buku Kod