اكتشف الجداءات المتناظرة في نطاق معطى.
العدد المتناظر هو عدد يبقى كما هو عند عكس أرقامه.
على سبيل المثال، 121 عدد متناظر، أما 112 فليس كذلك.
إذا أُعطي نطاق من الأعداد، فابحث عن أكبر وأصغر الأعداد المتناظرة التي تكون جداءات لعددين ضمن هذا النطاق.
ينبغي أن يُرجع حلّك أكبر وأصغر الأعداد المتناظرة، مع عوامل كل منهما ضمن النطاق. وإذا كان لأكبر عدد متناظر أو أصغر عدد متناظر أكثر من زوج واحد من العوامل ضمن النطاق، فأرجِع جميع الأزواج.
بفرض أن النطاق هو [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).
بفرض أن النطاق هو [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")
سجّل في Exercism لتتعلّم وتتقن Python عبر 17 مفهومًا146 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.