আপনার সেরা বন্ধু Marta সম্প্রতি একটি স্থানীয় ইতিহাস জাদুঘরের সংগ্রহ নিয়ে কাজ করার স্বপ্নের চাকরি পেয়েছে। প্রোগ্রামিং-এ আপনার আগ্রহের কথা জেনে, কম্পিউটিংয়ের ইতিহাস নিয়ে আসন্ন একটি প্রদর্শনীর কাজে কর্মক্ষেত্রে তার একটি সমস্যার কথা সে আপনাকে খুলে বলে। একটি স্থানীয় বিশ্ববিদ্যালয়ের গণিত বিভাগ কয়েক বাক্স ঐতিহাসিক প্রিন্টআউট দান করেছিল, কিন্তু নথিগুলোর জীর্ণ অবস্থার কারণে লেখাটি ডিজিটাইজ করার সিদ্ধান্ত নেওয়া হয়েছে। তবে বিশ্ববিদ্যালয়ের পুরোনো প্রিন্টারটিতে লেখা উপস্থাপনের ধরনে কিছু অদ্ভুত বৈশিষ্ট্য ছিল, আর ডেটাটি সফলভাবে বের করে আনতে তার আপনার সাহায্যের প্রয়োজন হতে পারে।
Optical Character Recognition বা OCR হলো এমন একটি সফটওয়্যার, যা লেখার ছবিকে মেশিনে পড়ার উপযোগী টেক্সটে রূপান্তর করে।
কিছু ডিজিট প্রকাশ করা ক্যারেক্টারের একটি গ্রিড দেওয়া হলে, সেই গ্রিডটিকে ডিজিটের একটি স্ট্রিংয়ে রূপান্তর করুন। গ্রিডে যদি সেলের একাধিক সারি থাকে, তাহলে আউটপুটে সারিগুলোকে "," দিয়ে আলাদা করতে হবে।
"|"), আন্ডারস্কোর ("_") এবং স্পেস (" ") দিয়ে।"?" আউটপুট দেওয়া উচিত।নিচের ইনপুটটি (কমেন্টগুলো ছাড়া) রূপান্তর করা হলে "1234567890" পাওয়া যায়।
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
নিচের ইনপুটটি রূপান্তর করা হলে "123,456,789" পাওয়া যায়।
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
কখনও কখনও এক্সসেপশন রেইজ করা প্রয়োজন হয়। এটি করলে, এররের উৎস কী তা বোঝাতে আপনার সর্বদা একটি অর্থবহ এরর মেসেজ যুক্ত করা উচিত। এতে আপনার কোড আরও পাঠযোগ্য হয় এবং ডিবাগ করতে যথেষ্ট সাহায্য করে। যেসব ক্ষেত্রে আপনি জানেন যে এররের উৎসটি একটি নির্দিষ্ট টাইপ হবে, সেখানে আপনি বিল্ট-ইন এরর টাইপগুলোর একটি রেইজ করা বেছে নিতে পারেন, তবে তবুও একটি অর্থবহ মেসেজ যুক্ত করা উচিত।
এই নির্দিষ্ট অনুশীলনীতে convert() ফাংশন যখন এমন একটি স্ট্রিং পায় যা বৈধ OCR সংখ্যা নয়, তখন raise স্টেটমেন্ট ব্যবহার করে একটি ValueError "থ্রো" করা প্রয়োজন। আপনি যদি 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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।