Kursus Pembangunan Python Lanjutan
Bab
>
Tahap
Pengendalian Pengecualian
Klausa Lain
Objektif
Ambil bahan-bahan pembaikan dan susun, kemudian buang sisa yang tidak diingini dengan menggunakan klausa else bersama pengendalian pengecualian.
Beberapa bahan pembaikan telah disimpan di bahagian atas bangunan, yang digunakan untuk membaiki atap selepas ribut atau kehausan umum. Sesetengahnya baru-baru ini dihantar dan masih disimpan dalam pembungkus dan bekas, manakala yang lain telah disimpan untuk jangka masa yang lama dan dibuang bersama sampah. Adalah idea yang baik untuk menyusun bahan-bahan tersebut, menyimpannya dengan betul dan membuang sampah serta sisa yang tidak diperlukan.
Disebabkan sifat bahan-bahan yang tidak teratur, anda mungkin dapat menjangkakan ralat. Anda boleh mengatasinya dengan blok kod try / except namun ia boleh menjadi agak rumit jika anda tidak biasa dengan ralat yang mungkin berlaku. Walau bagaimanapun, anda boleh memperluas alat pengendalian pengecualian dengan menambahkan klausa else. Ini membolehkan anda menjalankan kod sekiranya blok except tidak dilaksanakan, sekaligus melancarkan kod anda dan sesuai untuk mengenal pasti serta membersihkan ralat.
Untuk memulakan, anda harus berjalan ke bilik simpanan sebelah kiri dan bergerak ke arah tanda X yang cerah. Bilik ini menyimpan shingles yang digunakan untuk membaiki jubin atap. Gunakan fungsi collect() untuk mengambil constant senarai bernama shingles.
Senarai tersebut mungkin mempunyai beberapa bahan sampah yang tercampur yang perlu dikeluarkan, lebih-lebih lagi mereka disimpan dalam enam (6) ruang berasingan, masing-masing dengan jumlah bahan tersendiri. Anda perlu mengumpulkan semua bahan tersebut ke dalam satu timbunan. Cipta satu pembolehubah bernama red_storage untuk menyimpan semua bahan dan satu senarai bernama junk supaya anda boleh meletakkan semua bahan sisa.
Biasanya anda hanya akan mengenal pasti bahan-bahan tersebut, menukarnya kepada nombor bulat dengan int() dan menyimpannya dalam satu pembolehubah supaya anda boleh menyimpannya. Tetapi, seperti yang mungkin anda jangkakan, berdasarkan tahap-tahap sebelum ini dalam bab ini, dan subjek latihan ini, satu ralat pasti akan berlaku.
for x in range(6): player.speak(int(shingles[x])) red_storage+=int(shingles[x])
Ini akan menyebabkan Value Error, kerana beberapa item dalam senarai kelihatan bukan nombor. Untuk mengatasi masalah ini, anda boleh menggunakan blok kod try / except dan else untuk menyusun bahan-bahan tersebut. Dengan menggunakan blok else kita secara berkesan menukarkan blok except kepada penapis yang menghapuskan elemen yang tidak dikehendaki dalam senarai manakala blok else menangkap dan memindahkan elemen yang baik dari senarai ke dalam pembolehubah yang telah kita cipta.
for x in range(6): try: player.speak(int(shingles[x])) except: player.speak("Item %s is junk" % (x)) junk.append(shingles[x]) else: red_storage+=int(shingles[x])
Dengan ini, pembolehubah red_storage kini mengandungi semua shingles yang boleh digunakan, manakala semua sampah telah ditambahkan ke dalam senarai junk. Berjalanlah ke tanda X emas di bilik simpanan sebelah kiri yang anda berada, hadapkan meja dan gunakan fungsi write() untuk mencatat jumlah shingles untuk penyimpanan, seperti berikut: await player.write("There are %s shingles ready for use in storage" % (red_storage)) Selepas itu, berjalanlah ke tanda X gelap di atas permaidani merah dan gunakan fungsi place() untuk menyimpan pembolehubah red_storage dalam peti.
Setelah tugas ini selesai, pergilah ke bilik simpanan sebelah kanan, bilik ini menyimpan papan kayu dan bahan-bahan yang diperlukan untuk membaiki struktur atap dan dinding. Pergilah ke tanda X gelap di atas permaidani hijau dan gunakan fungsi collect() untuk mengambil constant senarai bernama planks_set dari peti, senarai ini mengandungi papan yang telah dibersihkan daripada sebarang sisa. Berjalanlah ke tanda X yang cerah di sebelahnya dan gunakan fungsi collect() sekali lagi untuk mengambil constant senarai bernama shipment, ini adalah bahan papan yang baru-baru ini dihantar dan masih mengandungi sedikit sisa.
Sama seperti di bilik sebelumnya, senarai shipment mungkin mempunyai beberapa bahan sampah yang tercampur yang perlu dikeluarkan. Sama seperti sebelumnya, ia disimpan dalam enam (6) ruang berasingan, masing-masing dengan jumlah bahan tersendiri. Cipta satu pembolehubah bernama blue_storage untuk menyimpan semua bahan supaya anda dapat mengumpulkannya ke dalam satu timbunan. Seperti sebelumnya, bahan sisa akan diletakkan ke dalam senarai junk.
Bagi papan kayu, kita akan menukar dan menambahkan semua bahan berguna dalam senarai shipment dan menambahkannya ke dalam senarai planks_set, kemudian mengumpulkannya menggunakan int() dalam pembolehubah blue_storage. Walau bagaimanapun, seperti sebelumnya, ralat dijangka berlaku.
for y in range(6): planks_set[y]+=int(shipment[y]) player.speak(planks_set[y]) blue_storage+=int(planks_set[y])
Kali ini, anda boleh menjangkakan Type Error, yang berlaku apabila anda cuba menambahkan nombor dan rentetan bersama-sama. Ini boleh diatasi dengan sekali lagi menggunakan blok kod try / except dan else, di mana try menambahkan senarai bersama, blok except menapis sampah daripada senarai dan klausa else menambahkan papan ke dalam blue_storage.
for y in range(6): try: planks_set[y]+=int(shipment[y]) player.speak(planks_set[y]) except: player.speak( "Item %s is junk. Slot only has %s items" % (y,planks_set[y])) junk.append(shipment[y]) else: blue_storage+=int(planks_set[y])
Sekarang setelah pembolehubah blue_storage telah dipenuhi, anda boleh mendokumentasikan dan menyimpan semua papan kayu. Berjalanlah ke tanda X emas di bilik simpanan sebelah kanan yang anda berada, hadapkan meja dan gunakan fungsi write() untuk mengira jumlah bahan yang telah anda kumpulkan, seperti berikut: await player.write("There are %s planks ready for use in storage" % (blue_storage))
Untuk memuktamadkan tahap ini, berjalanlah ke tanda X gelap di atas permaidani biru dan gunakan fungsi place() untuk menyimpan pembolehubah blue_storage dalam peti. Kemudian, berjalanlah ke tanda X gelap di atas permaidani ungu di ruang tengah dan gunakan fungsi place() untuk membuang senarai junk ke dalam saluran sampah, dengan itu menyelesaikan tugas anda.