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

अपवाद हैंडलिंग
अन्यथा खंड

उद्देश्य

मरम्मत सामग्रियों को लें और उन्हें छांटें, फिर अपवाद हैंडलिंग के साथ else क्लॉज का उपयोग करके अवांछित अपशिष्ट को नष्ट करें।

कुछ मरम्मत सामग्रियाँ इमारत के शीर्ष पर संग्रहीत की गई हैं, जिन्हें तूफानों या सामान्य घिसावट के बाद छत की मरम्मत के लिए उपयोग किया जाता है। कुछ सामग्रियाँ हाल ही में वितरित की गई हैं और अभी भी पैकर्स और कंटेनरों में रखी गई हैं, जबकि अन्य बहुत लंबे समय से संग्रहीत हैं और कचरे में फेंक दी गई थीं। सामग्री को छांटना, उन्हें सही ढंग से संग्रहित करना और कचरा तथा अपशिष्ट को फेंक देना एक अच्छा विचार होगा।

अव्यवस्थित सामग्रियों की प्रकृति के कारण, आप त्रुटियों की उम्मीद कर सकते हैं। आप इसे try / except कोड ब्लॉक का उपयोग करके संबोधित कर सकते हैं, हालांकि यदि आप यह नहीं जानते कि किन त्रुटियों का सामना करना पड़ सकता है तो यह थोड़ा जटिल हो सकता है। हालांकि, आप else क्लॉज जोड़कर अपनी अपवाद हैंडलिंग क्षमताओं का विस्तार कर सकते हैं। यह आपको except ब्लॉक के न चलने पर कोड चलाने की अनुमति देता है, जिससे आपका कोड सुव्यवस्थित रहता है और त्रुटियों की पहचान तथा सफाई में सहायक होता है।

शुरुआत करने के लिए, आपको बाईं ओर के स्टोरूम में प्रवेश करना चाहिए और प्रकाशमान X चिह्न की ओर बढ़ना चाहिए। यह कमरा छत की टाइलों की मरम्मत के लिए उपयोग किए जाने वाले शिंगल्स को संग्रहीत करता है। collect() फंक्शन का उपयोग करके shingles नामक सूची स्थिरांक को उठाएं।

संभावना है कि सूची में कई कचरा सामग्रियाँ मिली हुई हों जिन्हें हटाना आवश्यक है, अतिरिक्त रूप से ये छह (6) विभिन्न खंडों में संग्रहित हैं, जिनमें से प्रत्येक में अपनी-अपनी मात्रा में सामग्री है। आपको सभी सामग्रियों को एक एकीकृत ढेर में एकत्र करना है। सभी सामग्रियों को संग्रहीत करने के लिए red_storage नाम का वेरिएबल और कचरे की सामग्रियाँ जमा करने के लिए junk नाम की सूची बनाएं।

सामान्यतः आप बस सामग्रियों की पहचान करेंगे, उन्हें int() द्वारा पूर्ण संख्याओं में परिवर्तित करेंगे और उन्हें एक वेरिएबल में संग्रहीत करेंगे ताकि आप उन्हें रख सकें। लेकिन जैसा कि आप शायद अनुमान लगा सकते हैं, अध्याय के पिछले स्तरों और इस अभ्यास के विषय के आधार पर, एक त्रुटि अनिवार्य रूप से होने वाली है।

for x in range(6): player.speak(int(shingles[x])) red_storage+=int(shingles[x])

यह दुर्भाग्यवश Value Error उत्पन्न करेगा, क्योंकि सूची के कुछ आइटम संख्याएँ प्रतीत नहीं होते हैं। इसे सुधारने के लिए आप try / except और else कोड ब्लॉक का उपयोग करके सामग्रियों को छांट सकते हैं। else ब्लॉक का उपयोग करके हम प्रभावी रूप से except ब्लॉक को एक फिल्टर में परिवर्तित कर देते हैं जो सूची से अनावश्यक तत्वों को हटा देता है, जबकि else ब्लॉक अच्छे तत्वों को पकड़ कर हमारे द्वारा बनाए गए वेरिएबल में स्थानांतरित कर देता है।

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

इसके साथ red_storage वेरिएबल में अब सभी उपयोगी शिंगल्स मौजूद हैं, जबकि सारा कचरा junk सूची में जमा कर दिया गया है। वर्तमान में जिस बाईं ओर के स्टोरूम में हैं वहाँ स्वर्ण X चिह्न की ओर जाएँ, और write() फंक्शन का उपयोग करके स्टोरेज के लिए शिंगल्स की संख्या को लिखें, इस प्रकार: await player.write("There are %s shingles ready for use in storage" % (red_storage))। इसके बाद, लाल कालीन पर स्थित गहरे X चिह्न की ओर जाएँ और क्रेट में red_storage वेरिएबल को संग्रहीत करने के लिए place() फंक्शन का उपयोग करें।

इस कार्य के पूरा होने के बाद दाहिने स्टोरूम की ओर जाएँ, यह कमरा लकड़ी के फड़ों और छत तथा दीवार संरचनाओं की मरम्मत के लिए आवश्यक सामग्रियाँ संग्रहीत करता है। हरे कालीन के ऊपर स्थित गहरे X चिह्न की ओर जाएँ और क्रेट से planks_set नामक सूची स्थिरांक को प्राप्त करने के लिए collect() फंक्शन का उपयोग करें, जिसमें ऐसे फड़ शामिल हैं जिन्हें पहले ही कचरे से मुक्त कर दिया गया है। उसके बगल में स्थित प्रकाशमान X चिह्न के पास जाएँ और फिर से collect() फंक्शन का उपयोग करके shipment नामक एक अन्य सूची स्थिरांक को प्राप्त करें, ये फड़ सामग्रियाँ हाल ही में भेजी गई हैं और अभी भी कुछ कचरा मौजूद है।

पिछले कमरे की तरह, shipment सूची में भी संभावना है कि कई कचरा सामग्रियाँ मिली हों जिन्हें हटाना आवश्यक है। ठीक पहले की तरह इन्हें छह (6) विभिन्न खंडों में संग्रहित किया गया है, प्रत्येक में अपनी-अपनी मात्रा में सामग्री है। सभी सामग्रियों को एक एकीकृत ढेर में एकत्र करने के लिए blue_storage नाम का वेरिएबल बनाएं। पहले की तरह, कचरा सामग्रियाँ junk सूची में जमा की जाएंगी।

फड़ों के लिए, हम shipment सूची में सभी उपयोगी सामग्रियों को परिवर्तित कर, उन्हें planks_set सूची में जोड़ने जा रहे हैं, फिर सभी को int() का उपयोग करके blue_storage वेरिएबल में एकीकृत करेंगे। हालांकि, पहले की तरह, त्रुटियों की उम्मीद की जाती है।

for y in range(6): planks_set[y]+=int(shipment[y]) player.speak(planks_set[y]) blue_storage+=int(planks_set[y])

इस बार आप Type Error की उम्मीद कर सकते हैं, जो तब होता है जब आप संख्याओं और स्ट्रिंग्स को एक साथ जोड़ने की कोशिश करते हैं। इसे फिर से try / except और else कोड ब्लॉक का उपयोग करके संबोधित किया जा सकता है, जहाँ try सूची को जोड़ता है, except ब्लॉक सूची से कचरे को फिल्टर करता है और else क्लॉज फड़ों को 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])

अब जब blue_storage वेरिएबल भरा हुआ है, तो आप सभी लकड़ी के फड़ों का दस्तावेजीकरण और संग्रहण कर सकते हैं। दाहिने स्टोरूम में स्थित स्वर्ण X चिह्न की ओर जाएँ, मेज का सामना करें और write() फंक्शन का उपयोग करके उन सामग्रियों का हिसाब लिखें जिन्हें आपने एकीकृत किया है, इस प्रकार: await player.write("There are %s planks ready for use in storage" % (blue_storage))

लेवल को अंतिम रूप देने के लिए, नीले कालीन पर स्थित गहरे X चिह्न की ओर जाएँ और place() फंक्शन का उपयोग करके क्रेट में blue_storage वेरिएबल को संग्रहीत करें। फिर मध्य कक्ष में स्थित बैंगनी कालीन के ऊपर के गहरे X चिह्न की ओर जाएँ और place() फंक्शन का उपयोग करके junk सूची को कचरा डिब्बे में फेंक दें, जिससे आपका कार्य पूर्ण होता है।

कोड बुक