Coding for KidsCoding for Kids
Yaratıcı SeviyelerZorluklarÖğretmen Kılavuzu
Özellikler için oy verin
Gelişmiş Python Geliştirme Kursu
Bölüm
>
Seviye

İstisna Yönetimi
Bir İstisnanın Özeti

Amaç

Ofise gidin ve finally kod bloğu ve assert anahtar kelimesini kullanarak para arzının düzgün dengelendiğinden emin olun.

İkinci kattaki derin bir yerde, çiftliğin gelecekteki yatırımları için fonların saklandığı bir ofis bulunmaktadır. Tüm kayıtların dengede olduğundan emin olma zamanı gelmiştir. Sayılarla uğraşırken, matematik hataları ve diğer sorunlar kaçınılmaz olduğundan, hataları yakalamak ve çözmek için yine istisna yönetimi iyi bir fikirdir.

try / except ve else kod bloklarının yanı sıra, bir istisnayı sonlandırmanıza olanak tanıyan finally kod bloğu da bulunmaktadır. Buna ek olarak, assert anahtar kelimesi, kodun herhangi bir hata içerip içermediğini taramanıza olanak tanıyan ve hatalı kodu düzeltmenizi sağlayan bir hata ayıklama özelliğidir.

Ofis kapısının önündeki açık X işaretine doğru yürüyerek open() fonksiyonunu kullanın ve kapıyı açarak içeri girin. İçeri girdikten sonra, altın rengi X işaretine doğru ilerleyin ve collect() fonksiyonunu kullanarak iki farklı sabit olan: categories ve savings'i alın. categories sabiti, doğrulanması gereken üç kategori içindeki para arzını saklayan, sırasıyla: "exports", "imports", "stock" isimli öğeleri içeren bir listedir. savings sabiti ise, kasaların düzgün şekilde temin edilmesi için gerekebilecek para arzını saklayan bir değişkendir.

Tüm gerekli öğeler toplandıktan sonra, işiniz bittiğinde bir memur tarafından toplanıp dağıtılacak çuvallarda saklanan para arzını dengeleme zamanı gelmiştir. Mavi halı üzerindeki koyu X işaretine; ayrıca mavi, sarı ve kırmızı halılar üzerindeki X işaretlerine yürüyün. Burada, gönderilmeden önce her çuvalın tüm gerekli bileşenlere sahip olduğunu doğrulamak için categories liste sabitini kullanacağız.

Her çuval, categories listesinde bulunan bileşenleri içerecek şekilde tasarlanmıştır. Her çuval için karşılık gelen üç sözlük sabiti vardır: blue_sack, yellow_sack ve red_sack. Mavi halı üzerindeki X işaretinde dururken, çuvalın tüm gerekli malzemelere sahip olduğunu doğrulamak ve ardından arzın hesaplandığını onaylamak için bir for döngüsü çalıştırın.

for x in range(3): player.speak("%s = %s" % (categories[x] , blue_sack[categories[x]])) player.speak("All assets accounted for")

Bazı çuvallarda tüm gerekli malzemeler bulunabilir, ancak bu egzersizlerde her zamanki gibi bir hatayla karşılaşabilirsiniz. Bir sorunla karşılaşırsanız, hatayı yakalamak için try / except kod bloklarını kullanmalısınız; bu durumda, bir sözlük anahtarı bulunmadığında meydana gelen KeyError: hatası ile karşılaşılır. Böyle bir durumda, istisnaya finally eklenir; bu, her istisna yönetiminin sonunda her zaman çalışan bir kod ekleyerek istisnayı sonlandırır. İstisnalardan farklı olarak, her try için yalnızca bir finally bloğu olabilir. Örneğin, blue_sack durumunda:

try: for x in range(3): player.speak("%s = %s" % (categories[x] , blue_sack[categories[x]])) except: player.speak("Bag is missing %s, adding now" % (categories[x])) player.place(categories[x]) finally: player.speak("All assets accounted for")

Sarı ve kırmızı halılar üzerindeki koyu X işaretlerinde, yellow_sack ve red_sack sözlük sabitlerini kullanarak bu işlemi tekrarlayın. Hata, yalnızca çuvallarda eksik bir öğe olması durumunda meydana geldiği için bazı durumlarda gerekli olmayabilir.

Çuvallar doğrulandıktan sonra, yeşil, mor ve turuncu halılar önündeki sandıklara geçme zamanı gelmiştir. Burada, her sandıkta bulunan para arzının tam olarak 30 olduğundan emin olmalı ve ardından sandık kapatılmalıdır. Her sandığa karşılık gelen üç değişken sabit vardır: green_chest, purple_chest ve orange_chest.

Sandıkları doğrularken en büyük sorun, içeriğin tam olarak ne olduğunu bilmememizdir; bilinmeyen değerlerle uğraşırken assert anahtar kelimesini kullanabilirsiniz. Bu anahtar kelime, beyan ettiğiniz bir ifadenin doğru veya yanlış olduğunu doğrulamanıza olanak tanır; bu, kodunuzda herhangi bir hata olup olmadığını taramak için çok yararlıdır. assert anahtar kelimesi, try, except, else ve final ile ve bunların çeşitli kombinasyonlarıyla hata içeren kodu düzeltmek için kullanılır. Örneğin, green_chest durumunda:

try: assert(green_chest = 30) except AssertionError: player.speak("Chest is not full %s/30" % green_chest) drop = 30-green_chest savings -= drop player.place(drop) else: player.speak("All assets accounted for") finally: player.close()

Yukarıdaki kodda, green_chest'in doğru miktarda para arzı içerip içermediğini assert anahtar kelimesi ile doğruluyoruz. Eğer doğru miktarda para içermiyorsa, except bloğu tetiklenir; eksik olan miktar hesaplanıp savings değişkeninden çıkarılır ve sandığa eklenir. Arz tamamsa, else bloğu tetiklenir ve tüm varlıkların hesaplandığı doğrulanır. Her şey doğrulandıktan sonra, finally bloğu çalıştırılır ve sandığı kapatmak üzere close() fonksiyonu çağrılır.

Yeşil, mor ve turuncu halılar üzerindeki X işaretlerinde, sandıkların karşısına geçin ve ilgili renkteki halıda sırasıyla green_chest, purple_chest, orange_chest kullanarak doğrulamayı çalıştırın. İşlem tamamlandıktan sonra, açık X işaretine yürüyün ve leveli tamamlamak için savings değişkeninin kalanını sandığa kaydetmek üzere place() fonksiyonunu kullanın.

Kod Kitabı