عدد أرمسترونغ هو عدد صحيح غير سالب يساوي مجموع أرقامه بعد رفع كل رقم إلى أس عدد الخانات. لذلك استخدام الأس 3 دائمًا لا يصلح لفحص كل الأعداد. نحدد عدد الخانات من التمثيل النصي ثم نجمع القوى، مع دعم الصفر ورفض القيم السالبة.
الكود الكامل باستخدام Python 3
def is_armstrong(number):
if number < 0:
return False
digits = str(number)
power = len(digits)
return number == sum(int(digit) ** power for digit in digits)
if __name__ == "__main__":
try:
number = int(input("Non-negative integer: "))
print("Armstrong" if is_armstrong(number) else "Not Armstrong")
except ValueError:
print("Please enter an integer.")مثال من ثلاث خانات
العدد 153 يحقق الشرط لأن 1³ + 5³ + 3³ يساوي 153. أما العدد 154 فلا يساوي مجموع القوى الخاصة بأرقامه. عند تجربة عدد من أربع خانات، مثل 9474، يصبح الأس 4؛ هذه الحالة تكشف خطأ تثبيت الأس على 3 في المثال القديم.
حالة الصفر والرقم المفرد
يمثل الصفر بخانة واحدة، وتساوي 0 مرفوعة إلى 1 صفرًا، لذلك ينجح في الاختبار. كذلك تنجح الأرقام من 1 إلى 9 وفق التعريف نفسه. نعيد False للسالب قبل تحليل خاناته حتى لا نحاول تحويل علامة الطرح إلى رقم.
تدريب إضافي
يمكن استدعاء الدالة داخل حلقة للعثور على أعداد أرمسترونغ ضمن نطاق صغير. لا تغيّر العدد الأصلي أثناء استخراج الخانات إذا أردت مقارنته في النهاية. استخدمنا sum بدل متغير بالاسم نفسه كي تظل الدالة المضمنة متاحة، واختبر على الأقل 0 و153 و154 و9474.
الصور والفيديو المرفقان بالدرس
مصادر المثال السابق: programiz






