आप अपने घर के पास वाले जंगल में पेड़ पर एक घर बनाने की सोच रहे हैं, ताकि आप सूरज के उगने और डूबने को देख सकें।
आपने एक स्थानीय सर्वे कंपनी से ऐसा डेटा लिया है, जिसमें नक्शे के हर आयताकार हिस्से के हर पेड़ की ऊँचाई दर्ज है। आपको नक्शे के हर ग्रिड का विश्लेषण करना होगा, ताकि पता चले कि आपके पेड़ वाले घर के लिए कौन से पेड़ अच्छे हैं।
एक अच्छे पेड़ में ये दोनों बातें होती हैं:
आपको वे संभावित पेड़ ढूँढने हैं जहाँ आप अपना ट्री हाउस बना सकते हैं।
डेटा कंपनी यह डेटा ग्रिड के रूप में देती है, जो पेड़ों की ऊँचाइयाँ दिखाते हैं। ग्रिड की पंक्तियाँ पूर्व-पश्चिम दिशा दर्शाती हैं, और स्तंभ उत्तर-दक्षिण दिशा दर्शाते हैं।
ऐसा पेड़ स्वीकार्य होगा जो अपनी पंक्ति में सबसे बड़ा हो, और साथ ही अपने स्तंभ में सबसे छोटा हो।
हो सकता है कि किसी ग्रिड में कोई अच्छा पेड़ ही न हो। और हो सकता है कि एक हो, या कई हो।
यहाँ एक ऐसा ग्रिड है जिसमें ठीक एक संभावित पेड़ है।
↓
1 2 3 4
|-----------
1 | 9 8 7 8
→ 2 |[5] 3 2 4
3 | 6 6 7 1
तो [2, 1] (पंक्ति: 2, स्तंभ: 1) वाला बिंदु ट्री हाउस बनाने के लिए बढ़िया जगह है।
कभी-कभी एक्सेप्शन raise करना आवश्यक हो जाता है। ऐसा करते समय आपको हमेशा एक अर्थपूर्ण एरर संदेश शामिल करना चाहिए, जो यह बताए कि एरर का स्रोत क्या है। इससे आपका कोड पढ़ने में आसान हो जाता है और डीबग करने में काफी मदद मिलती है। ऐसी स्थितियों में, जहाँ आप जानते हैं कि एरर का स्रोत एक निश्चित टाइप का होगा, आप बिल्ट-इन एरर टाइप में से कोई एक raise कर सकते हैं, लेकिन तब भी संदेश अर्थपूर्ण होना चाहिए।
इस विशेष अभ्यास में, अगर matrix अनियमित हो, तो आपको raise स्टेटमेंट का इस्तेमाल करके ValueError "फेंकना" होता है। टेस्ट तभी पास होंगे जब आप exception को raise करें और उसके साथ एक संदेश भी शामिल करें।
किसी संदेश के साथ ValueError raise करने के लिए, संदेश को exception टाइप के आर्गुमेंट के रूप में लिखिए:
# if the matrix is irregular
raise ValueError("irregular matrix")
Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।