आपको अभी-अभी गणित के प्रोफेसर की नौकरी मिली है। आपका पहला सप्ताह अच्छा गुज़रा, लेकिन दूसरे सप्ताह में कुछ गड़बड़ है। समस्या यह है कि आपके विद्यार्थियों द्वारा दिया गया हर उत्तर गलत है! सौभाग्य से, आपके गणित के कौशल से आप यह पहचान पाए कि असली दिक्कत कहाँ है: विद्यार्थियों के उत्तर वास्तव में सही हैं, लेकिन वे सब आधार 2 (बाइनरी) में हैं! हैरानी की बात यह है कि हर सप्ताह विद्यार्थी कोई अलग आधार इस्तेमाल करते हैं। इसके लिए कि आप विद्यार्थियों के उत्तर जल्दी जाँच सकें, आप एक टूल बनाएँगे जो संख्याओं को एक आधार से दूसरे आधार में बदल देता है।
एक आधार में लिखे अंकों के क्रम को, जो एक संख्या दर्शाता है, दूसरे आधार के अंकों के क्रम में बदलिए, जो वही संख्या दर्शाता है।
इस रूपांतरण को खुद लागू करने की कोशिश कीजिए। रूपांतरण करने के लिए किसी और चीज़ का इस्तेमाल न कीजिए।
स्थानीय मान पद्धति में b आधार वाली किसी संख्या को b की घातों के रैखिक संयोजन के रूप में समझा जा सकता है।
संख्या 42, आधार 10 में, का अर्थ है:
(4 × 10¹) + (2 × 10⁰)
संख्या 101010, आधार 2 में, का अर्थ है:
(1 × 2⁵) + (0 × 2⁴) + (1 × 2³) + (0 × 2²) + (1 × 2¹) + (0 × 2⁰)
संख्या 1120, आधार 3 में, का अर्थ है:
(1 × 3³) + (1 × 3²) + (2 × 3¹) + (0 × 3⁰)
हाँ। ऊपर लिखी ये तीनों संख्याएँ बिल्कुल एक ही हैं। बधाई हो!
कभी-कभी एक्सेप्शन रेज़ करना ज़रूरी होता है। ऐसा करते समय आपको हमेशा एक सार्थक एरर संदेश देना चाहिए, जो बताए कि एरर की जड़ कहाँ है। इससे आपका कोड पढ़ने में आसान हो जाता है और डिबगिंग में काफी मदद मिलती है। जहाँ आपको पता हो कि एरर की जड़ एक तय तरह की होगी, वहाँ आप अंतर्निहित एरर टाइप में से कोई एक रेज़ कर सकते हैं, लेकिन संदेश तब भी सार्थक होना चाहिए।
इस खास अभ्यास में आपको अलग-अलग इनपुट और आउटपुट आधारों के लिए raise स्टेटमेंट का उपयोग करके एक ValueError "फेंकना" है। टेस्ट तभी पास होंगे जब आप exception को raise करेंगे और उसके साथ एक सार्थक संदेश भी देंगे।
संदेश के साथ ValueError रेज़ करने के लिए, संदेश को exception टाइप के आर्गुमेंट के रूप में लिखिए:
# for input.
raise ValueError("input base must be >= 2")
# another example for input.
raise ValueError("all digits must satisfy 0 <= d < input base")
# or, for output.
raise ValueError("output base must be >= 2")
Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।