आपके सबसे अच्छे दोस्त मार्ता को हाल ही में अपने सपनों की नौकरी मिली है। उस नौकरी में उन्हें एक स्थानीय इतिहास संग्रहालय के संग्रह के साथ काम करना है। आपको प्रोग्रामिंग में रुचि है, यह जानते हुए वे अपने काम की एक समस्या आपसे साझा करते हैं। यह समस्या कंप्यूटिंग के इतिहास पर होने वाली एक आगामी प्रदर्शनी से जुड़ी है। एक स्थानीय विश्वविद्यालय के गणित विभाग ने ऐतिहासिक प्रिंटआउट के कई डिब्बे दान किए थे। लेकिन दस्तावेज़ों की हालत बहुत खराब थी, इसलिए यह तय किया गया है कि टेक्स्ट को डिजिटल रूप में बदल दिया जाए। लेकिन उस विश्वविद्यालय के पुराने प्रिंटर में टेक्स्ट को दिखाने के कुछ अजीब तरीके थे। डेटा को सफलतापूर्वक निकालने में आपकी मदद आपके दोस्त के बहुत काम आ सकती है।
ऑप्टिकल कैरेक्टर रिकग्निशन या OCR एक ऐसा सॉफ्टवेयर है जो टेक्स्ट की छवियों को मशीन द्वारा पढ़े जा सकने वाले टेक्स्ट में बदल देता है।
कुछ अंकों को दर्शाने वाले अक्षरों का एक ग्रिड दिया गया है। इस ग्रिड को अंकों की स्ट्रिंग में बदलिए।
अगर ग्रिड में सेलों की कई पंक्तियाँ हों, तो आउटपुट में उन पंक्तियों को "," से अलग किया जाना चाहिए।
"|"), अंडरस्कोर ("_") और स्पेस (" ") से बनाया जाता है।"?" आउटपुट करना चाहिए।नीचे दिया गया इनपुट (कमेंट के बिना) "1234567890" में बदल दिया जाता है।
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
नीचे दिया गया इनपुट "123,456,789" में बदल दिया जाता है।
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
कभी-कभी एक एक्सेप्शन उठाना ज़रूरी हो जाता है। ऐसा करते समय आपको हमेशा एक सार्थक एरर संदेश शामिल करना चाहिए, जिससे पता चले कि एरर का स्रोत क्या है। इससे आपका कोड ज़्यादा पढ़ने योग्य बनता है और डीबग करने में काफी मदद मिलती है। जिन स्थितियों में आपको पता हो कि एरर का स्रोत एक खास टाइप का होगा, वहाँ आप अंतर्निहित एरर टाइपों में से कोई एक उठाना चुन सकते हैं, लेकिन तब भी सार्थक संदेश शामिल करना चाहिए।
इस अभ्यास में यह ज़रूरी है कि जब convert() फंक्शन को कोई ऐसी स्ट्रिंग मिले जो मान्य OCR संख्या नहीं है, तब आप raise स्टेटमेंट का उपयोग करके ValueError "फेंकें"। टेस्ट तभी पास होंगे जब आप exception को raise करें और उसके साथ एक संदेश भी शामिल करें।
किसी संदेश के साथ ValueError उठाने के लिए, संदेश को exception टाइप के आर्गुमेंट के रूप में लिखिए:
# when the rows aren't multiples of 4
raise ValueError("Number of input lines is not a multiple of four")
# when the columns aren't multiples of 3
raise ValueError("Number of input columns is not a multiple of three")
Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।