المسارات
/
Python
Python
/
التمارين
/
حاصلات ضرب متناظرة
حاصلات ضرب متناظرة

حاصلات ضرب متناظرة

متوسط

التعليمات

اكتشف الجداءات المتناظرة في نطاق معطى.

العدد المتناظر هو عدد يبقى كما هو عند عكس أرقامه. على سبيل المثال، 121 عدد متناظر، أما 112 فليس كذلك.

إذا أُعطي نطاق من الأعداد، فابحث عن أكبر وأصغر الأعداد المتناظرة التي تكون جداءات لعددين ضمن هذا النطاق.

ينبغي أن يُرجع حلّك أكبر وأصغر الأعداد المتناظرة، مع عوامل كل منهما ضمن النطاق. وإذا كان لأكبر عدد متناظر أو أصغر عدد متناظر أكثر من زوج واحد من العوامل ضمن النطاق، فأرجِع جميع الأزواج.

مثال 1

بفرض أن النطاق هو [1, 9] (شاملًا الطرفين)...

وبفرض أن قائمة جميع الجداءات الممكنة ضمن هذا النطاق هي: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]

الجداءات المتناظرة كلها أعداد من رقم واحد (في هذه الحالة): [1, 2, 3, 4, 5, 6, 7, 8, 9]

أصغر جداء متناظر هو 1. وعوامله هي (1, 1). أكبر جداء متناظر هو 9. وعوامله هي (1, 9) و(3, 3).

مثال 2

بفرض أن النطاق هو [10, 99] (شاملًا الطرفين)...

أصغر جداء متناظر هو 121. وعوامله هي (11, 11). أكبر جداء متناظر هو 9009. وعوامله هي (91, 99).

ملاحظات حول تنفيذ smallest وlargest:

يجب أن تأخذ كلتا الدالتين وسيطين مسمّيين:

  • max_factor: int
  • min_factor: int، وقيمته الافتراضية 0

يجب أن تكون القيمة المُرجَعة tuple -- (value, factors) حيث value هو العدد المتناظر نفسه، وfactors هو iterable يضم كلا عاملي العدد المتناظر بأي ترتيب.

رسائل الاستثناء

أحيانًا تحتاج إلى رفع استثناء. وعندما تفعل ذلك، ينبغي أن تُرفق دائمًا رسالة خطأ ذات معنى توضّح مصدر الخطأ. فهذا يجعل الكود أسهل في القراءة ويساعد كثيرًا في تصحيح الأخطاء. وإذا كنت تعرف أن مصدر الخطأ سيكون من نوع معيّن، يمكنك اختيار رفع أحد أنواع الأخطاء المضمّنة، لكن يجب أن تُرفق به رسالة ذات معنى.

يتطلب هذا التمرين تحديدًا أن تستخدم عبارة raise من أجل «إطلاق» ValueError عندما تتلقى الدالة largest() أو smallest() زوجًا من العوامل لا يقع ضمن النطاق الصحيح. ولن تنجح الاختبارات إلا إذا استخدمت raise مع exception وأرفقت به رسالة.

لرفع ValueError مع رسالة، اكتب الرسالة كوسيط لنوع exception:

# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Python Exercism

مستعد لبدء حاصلات ضرب متناظرة؟

سجّل في Exercism لتتعلّم وتتقن Python عبر 17 مفهومًا146 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.