নিকোমাকাসের (৬০ - ১২০ খ্রিস্টাব্দ) ধনাত্মক পূর্ণসংখ্যার শ্রেণিবিভাগ অনুসারে একটি সংখ্যা perfect, abundant, না deficient তা নির্ধারণ করুন।
গ্রিক গণিতবিদ নিকোমাকাস ধনাত্মক পূর্ণসংখ্যার জন্য একটি শ্রেণিবিভাগ তৈরি করেছিলেন, যেখানে প্রতিটি সংখ্যাকেই তার প্রকৃত গুণনীয়কের সমষ্টির ভিত্তিতে perfect, abundant বা deficient, এই তিনটি শ্রেণির ঠিক একটিতে ফেলা হয়।
প্রকৃত গুণনীয়কের সমষ্টি বলতে সংখ্যাটির নিজেকে বাদ দিয়ে তার গুণনীয়কগুলোর যোগফলকে বোঝায়।
যেমন, 15 সংখ্যাটির প্রকৃত গুণনীয়কের সমষ্টি 1 + 3 + 5 = 9।
কোনো সংখ্যা তার প্রকৃত গুণনীয়কের সমষ্টির সমান হলে সেই সংখ্যাকে perfect বলা হয়। যেমন:
6 একটি perfect সংখ্যা, কারণ 1 + 2 + 3 = 6
28 একটি perfect সংখ্যা, কারণ 1 + 2 + 4 + 7 + 14 = 28
কোনো সংখ্যা তার প্রকৃত গুণনীয়কের সমষ্টির চেয়ে ছোট হলে সেই সংখ্যাকে abundant বলা হয়। যেমন:
12 একটি abundant সংখ্যা, কারণ 1 + 2 + 3 + 4 + 6 = 16
24 একটি abundant সংখ্যা, কারণ 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36
কোনো সংখ্যা তার প্রকৃত গুণনীয়কের সমষ্টির চেয়ে বড় হলে সেই সংখ্যাকে deficient বলা হয়। যেমন:
8 একটি deficient সংখ্যা, কারণ 1 + 2 + 4 = 7
কোনো সংখ্যা perfect কি না তা নির্ধারণ করার একটি উপায় তৈরি করুন। আপনার ভাষার ট্র্যাকের ওপর নির্ভর করে আপনাকে হয়তো কোনো সংখ্যা abundant বা deficient কি না তা নির্ধারণের উপায়ও তৈরি করতে হতে পারে।
মাঝে মাঝে এক্সেপশন রেইজ করা প্রয়োজন হয়। এটি করার সময় আপনি সর্বদা একটি অর্থবহ এরর বার্তা যুক্ত করবেন, যাতে বোঝা যায় এররটির উৎস কী। এতে আপনার কোড আরও পাঠযোগ্য হয় এবং ডিবাগ করতে অনেক সুবিধা হয়। যেসব ক্ষেত্রে আপনি জানেন এররের উৎসটি নির্দিষ্ট কোনো টাইপ হবে, সেখানে আপনি বিল্ট-ইন এরর টাইপগুলোর যেকোনো একটি রেইজ করা বেছে নিতে পারেন, তবে তবুও একটি অর্থবহ বার্তা যুক্ত করা উচিত।
এই নির্দিষ্ট অনুশীলনীতে classify() ফাংশনে এমন কোনো সংখ্যা পাস করা হলে, যা ধনাত্মক ইন্টিজার নয়, তখন ValueError "থ্রো" করার জন্য raise স্টেটমেন্ট ব্যবহার করতে হবে। আপনি raise করলে এবং exception-এর সঙ্গে একটি বার্তা যুক্ত করলে তবেই টেস্টগুলো পাস করবে।
একটি বার্তাসহ ValueError রেইজ করতে, exception টাইপে আর্গুমেন্ট হিসেবে বার্তাটি লিখুন:
# if a number to be classified is less than 1.
raise ValueError("Classification is only possible for positive integers.")
Exercism-এ সাইন আপ করুন, Python ট্র্যাকের 17টি কনসেপ্ট146টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।