Coding for KidsCoding for Kids
रचनात्मक स्तरचुनौतियांशिक्षक गाइड
सुविधाओं के लिए वोट करें
उन्नत पायथन विकास पाठ्यक्रम
अध्याय
>
स्तर

अपवाद हैंडलिंग
एक अपवाद का समापन

उद्देश्य

ऑफिस जाएँ और सुनिश्चित करें कि पैसे की आपूर्ति सही तरीके से संतुलित है, इसके लिए finally कोड ब्लॉक और assert कुंजी शब्द का उपयोग करें।

दूसरी मंजिल के गहराई में एक ऑफिस है जो फार्म के भविष्य के निवेशों के लिए निधि संग्रहित करने के लिए समर्पित है। अब समय आ गया है कि जाँच करें और सुनिश्चित करें कि सभी किताबें संतुलित हैं। जब संख्याओं के साथ काम किया जाता है, तो गणितीय त्रुटियाँ और अन्य समस्याएँ अवश्य होंगी, इसलिए फिर से अपवाद प्रबंधन (exception handling) एक अच्छा विचार है ताकि त्रुटियों को पकड़ा और हल किया जा सके।

try / except और else कोड ब्लॉकों के अलावा finally कोड ब्लॉक भी है जो आपको एक अपवाद को समाप्त करने की अनुमति देता है। इसके अतिरिक्त, assert कुंजी शब्द एक डिबग सुविधा है जो आपको कोड में त्रुटियाँ स्कैन करने की अनुमति देती है, जिससे आप खराब कोड को ठीक कर सकते हैं।

ऑफिस के दरवाजे के सामने हल्के X निशान तक जाकर open() फ़ंक्शन का उपयोग करके दरवाजा खोलकर प्रवेश करें। अंदर जाने के बाद अपने आप को सुनहरे X निशान तक ले जाएँ और collect() फ़ंक्शन का उपयोग करके दो अलग-अलग स्थिरांक (constants) को प्राप्त करें जिनके नाम हैं: categories और savingscategories स्थिरांक एक सूची है जो तीन श्रेणियों की मुद्रा आपूर्ति रखता है, जिनके नाम हैं: "exports", "imports", "stock", जिन्हें सत्यापित करने की आवश्यकता है। savings स्थिरांक एक चर है जो उस मुद्रा आपूर्ति को रखता है जो यह सुनिश्चित करने के लिए आवश्यक हो सकती है कि खजाने (coffers) में सही आपूर्ति है।

अब जब सभी आवश्यक वस्तुएँ एकत्र कर ली गई हैं, तो यह समय है कि उन थैलों में संग्रहीत मुद्रा आपूर्ति को संतुलित किया जाए जिन्हें आपके काम के समाप्त होने के बाद एक लिपिक द्वारा एकत्र किया जाएगा और वितरित किया जाएगा। blue कालीन पर स्थित गहरे X निशान की ओर जाएँ, साथ ही blue, yellow और red कालीनों पर स्थित X निशानों की ओर। यहाँ हम categories सूची स्थिरांक का उपयोग करेंगे यह सत्यापित करने के लिए कि प्रत्येक थैले में सभी आवश्यक घटक मौजूद हैं, इससे पहले कि उन्हें भेजा जाए।

प्रत्येक थैले में categories सूची में पाए जाने वाले घटक होने चाहिए। प्रत्येक थैले के अनुरूप तीन शब्दकोश स्थिरांक हैं: blue_sack, yellow_sack और red_sackblue कालीन पर स्थित X निशान पर खड़े होकर एक for लूप चलाएँ यह सत्यापित करने के लिए कि थैले में सभी आवश्यक सामग्रियाँ हैं, फिर आपूर्ति का हिसाब किया जाए।

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

कुछ थैलों में सभी आवश्यक सामग्रियाँ हो सकती हैं, लेकिन इन अभ्यासों में हमेशा की तरह, आप एक त्रुटि से भी सामना कर सकते हैं। यदि आप कोई समस्या पाते हैं तो आपको त्रुटि को पकड़ने के लिए try / except कोड ब्लॉकों का उपयोग करना चाहिए, इस मामले में यह KeyError: होता है जो तब होता है जब किसी शब्दकोश कुंजी को नहीं पाया जाता। जब ऐसा होता है तो हम अपवाद में finally भी जोड़ते हैं, जो अपवाद को समाप्त करने के लिए एक ऐसा कोड जोड़ता है जो प्रत्येक अपवाद प्रबंधन के अंत में हमेशा निष्पादित होता है। अपवादों के विपरीत, प्रति try केवल एक finally ब्लॉक हो सकता है। उदाहरण के लिए, blue_sack के मामले में:

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

yellow और red कालीनों पर स्थित गहरे X निशानों पर इस प्रक्रिया को दोहराएँ, yellow_sack और red_sack शब्दकोश स्थिरांकों का उपयोग करते हुए। कुछ मामलों में यह आवश्यक नहीं हो सकता क्योंकि त्रुटि केवल तभी होती है जब थैलों में कोई वस्तु गायब हो।

अब जब थैलों का सत्यापन हो गया है, तो यह समय है कि आपर्स की ओर बढ़ें जो green, purple और orange कालीनों के सामने हैं। यहाँ हमें सुनिश्चित करना है कि प्रत्येक चेस्ट में मुद्रा आपूर्ति ठीक 30 हो और फिर उसे बंद कर दिया जाए। प्रत्येक चेस्ट के अनुरूप तीन चर स्थिरांक हैं, जिनके नाम हैं: green_chest, purple_chest, और orange_chest

चेस्टों का सत्यापन करने में सबसे बड़ी समस्या यह है कि हमें उनका सटीक सामग्री ज्ञात नहीं है, जब आप अज्ञात मानों से निपटते हैं तो आप assert कुंजी शब्द का उपयोग कर सकते हैं। यह कुंजी शब्द आपको यह सत्यापित करने की अनुमति देता है कि आप द्वारा घोषित कथन सही है या गलत, यह बहुत उपयोगी है यदि आपके कोड में कोई त्रुटियाँ हैं तो उन्हें स्कैन करने के लिए। assert कुंजी शब्द का उपयोग try, except, else और final के साथ और उनके विभिन्न संयोजनों के साथ किया जाता है ताकि त्रुटियों वाले कोड की मरम्मत की जा सके। उदाहरण के लिए, green_chest के मामले में:

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

उपरोक्त कोड में हम यह सत्यापित करते हैं कि green_chest में assert कुंजी शब्द का उपयोग करके सही मात्रा में मुद्रा आपूर्ति है या नहीं। यदि इसमें सही मात्रा नहीं होती है, तो except ब्लॉक सक्रिय हो जाता है और हम गायब सप्लाई की गणना करते हैं, फिर उसे savings चर से घटाते हैं और चेस्ट में जोड़ते हैं। यदि आपूर्ति पूरी है, तो else ब्लॉक सक्रिय हो जाता है और पुष्टि हो जाती है कि सभी संपत्तियाँ सही से गिनी गई हैं। एक बार सब कुछ सत्यापित हो जाने के बाद, finally ब्लॉक निष्पादित होता है और चेस्ट को बंद करने के लिए close() फ़ंक्शन शुरू होता है।

green, purple और orange कालीनों पर स्थित X निशानों पर चेस्ट के सामने जाएँ और संबंधित रंग वाले कालीनों पर green_chest, purple_chest, orange_chest का उपयोग करते हुए सत्यापन करें। एक बार पूरा होने पर, हल्के X निशान की ओर जाएँ और स्तर पूरा करने के लिए place() फ़ंक्शन का उपयोग करके savings चर की शेष राशि को क्रेट में संग्रहीत करें।

कोड बुक