حدّد ما إذا كان العدد perfect أو abundant أو deficient، بناءً على مخطط التصنيف الذي وضعه نيقوماخوس (60 - 120 م) للأعداد الصحيحة الموجبة.
وضع عالم الرياضيات الإغريقي نيقوماخوس مخططًا لتصنيف الأعداد الصحيحة الموجبة، يحدّد فيه انتماء كل عدد انتماءً وحيدًا إلى إحدى فئات 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.
أحيانًا تحتاج إلى رفع استثناء. وعندما تفعل ذلك، ينبغي أن تُضمّن دائمًا رسالة خطأ ذات معنى تشير إلى مصدر الخطأ. فهذا يجعل الكود أكثر قابلية للقراءة ويساعد كثيرًا في تصحيح الأخطاء. وفي الحالات التي تعرف فيها أن مصدر الخطأ سيكون من نوع معيّن، يمكنك اختيار رفع أحد أنواع الأخطاء المدمجة، لكن ينبغي أن تُضمّن مع ذلك رسالة ذات معنى.
يتطلب هذا التمرين تحديدًا أن تستخدم عبارة raise لـ"إطلاق" ValueError إذا مُرِّر إلى دالة classify() عدد ليس عددًا صحيحًا موجبًا. ولن تنجح الاختبارات إلا إذا نفّذت 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 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.