आप गणितज्ञों के एक ऐसे समूह से मिले हैं जो गायक-गीतकार भी हैं। उन्होंने अपनी हर पसंदीदा संख्या के लिए एक गाना लिखा है, और जैसा कि आप अंदाज़ा लगा सकते हैं, उनकी पसंदीदा संख्याएँ बहुत सारी हैं (जैसे 0, 73 या 6174)।
आप अपनी पसंदीदा संख्या का गाना सुनने के लिए उत्सुक हैं, लेकिन गाने इतने सारे हैं कि सही गाना ढूँढने में थोड़ा समय लग सकता है। अच्छी बात यह है कि उन्होंने अपने गानों को एक प्लेलिस्ट में शीर्षक के हिसाब से लगाया है। शीर्षक और कुछ नहीं, वही संख्या है जिसके बारे में वह गाना है।
आप समझ जाते हैं कि शीर्षक देखकर गाना जल्दी ढूँढने के लिए आप बाइनरी सर्च एल्गोरिदम का उपयोग कर सकते हैं।
आपको एक बाइनरी सर्च एल्गोरिदम लागू करना है।
बाइनरी सर्च एल्गोरिदम किसी ऐरे में कोई चीज़ ढूँढता है। इसके लिए वह ऐरे को बार-बार आधे में बाँटता है और सिर्फ उसी आधे को रखता है जिसमें वह चीज़ होती है जिसे हम ढूँढ रहे हैं। इससे हम अपनी चीज़ की संभावित जगहों को जल्दी-जल्दी कम करते जाते हैं, जब तक कि वह चीज़ मिल न जाए या सारी संभावित जगहें खत्म न हो जाएँ।
बाइनरी सर्च सिर्फ तब काम करती है जब ऐरे क्रमबद्ध हो।
यह एल्गोरिदम ऐसा दिखता है:
यहाँ एक उदाहरण देखिए:
मान लीजिए हमें इस क्रमबद्ध ऐरे में संख्या 23 ढूँढनी है: [4, 8, 12, 16, 23, 28, 32].
[23, 28, 32] बचता है।[23].कभी-कभी एक्सेप्शन उठाना ज़रूरी हो जाता है। ऐसा करते समय आपको हमेशा एक अर्थपूर्ण एरर संदेश शामिल करना चाहिए, जो बताए कि एरर कहाँ से आई है। इससे आपका कोड पढ़ने में आसान हो जाता है और डीबग करने में काफी मदद मिलती है। जहाँ आपको पता हो कि एरर का स्रोत एक तय तरह का ही होगा, वहाँ आप पहले से बने एरर टाइप में से कोई एक उठाना चुन सकते हैं, लेकिन तब भी अर्थपूर्ण संदेश शामिल करना चाहिए।
इस अभ्यास में, जब दी गई वैल्यू ऐरे में न मिले, तो आपको raise स्टेटमेंट से ValueError "फेंकना" है। टेस्ट तभी सफल होंगे जब आप exception को raise करें और उसके साथ एक संदेश भी शामिल करें।
संदेश के साथ ValueError उठाने के लिए, संदेश को exception टाइप के आर्गुमेंट के रूप में लिखिए:
# example when value is not found in the array.
raise ValueError("value not in array")
Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।