اعداد تام

اعداد تام

آسان

دستورالعمل‌ها

بر اساس طرح طبقه‌بندی نیکوماخوس (۶۰ تا ۱۲۰ میلادی) برای اعداد صحیح مثبت، مشخص کنید که یک عدد perfect است، abundant است یا deficient.

ریاضیدان یونانی، نیکوماخوس، طرحی برای طبقه‌بندی اعداد صحیح مثبت ابداع کرد که هر عدد را به‌طور یکتا در یکی از دسته‌های perfect، abundant یا deficient قرار می‌دهد، بر پایه‌ی «مجموع مقسوم‌علیه‌های حقیقی». مجموع مقسوم‌علیه‌های حقیقی برابر است با مجموع مقسوم‌علیه‌های یک عدد، بدون در نظر گرفتن خود آن عدد. برای نمونه، مجموع مقسوم‌علیه‌های حقیقی عدد 15 برابر است با 1 + 3 + 5 = 9.

Perfect

یک عدد وقتی perfect است که با مجموع مقسوم‌علیه‌های حقیقی خود برابر باشد. برای نمونه:

  • 6 عددی perfect است، چون 1 + 2 + 3 = 6
  • 28 عددی perfect است، چون 1 + 2 + 4 + 7 + 14 = 28

Abundant

یک عدد وقتی abundant است که کوچک‌تر از مجموع مقسوم‌علیه‌های حقیقی خود باشد. برای نمونه:

  • 12 عددی abundant است، چون 1 + 2 + 3 + 4 + 6 = 16
  • 24 عددی abundant است، چون 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36

Deficient

یک عدد وقتی deficient است که بزرگ‌تر از مجموع مقسوم‌علیه‌های حقیقی خود باشد. برای نمونه:

  • 8 عددی deficient است، چون 1 + 2 + 4 = 7
  • اعداد اول deficient هستند

Task

راهی پیاده‌سازی کنید تا مشخص شود یک عدد داده‌شده perfect است یا نه. بسته به مسیر زبان شما، ممکن است لازم باشد راهی هم پیاده‌سازی کنید تا مشخص شود آن عدد abundant یا deficient است.

پیام‌های استثنا

گاهی لازم است یک استثنا ایجاد کنید. وقتی این کار را می‌کنید، همیشه باید یک پیام خطای معنادار هم بگنجانید تا نشان دهید منبع خطا چیست. این کار خوانایی کد شما را بیشتر می‌کند و به‌طور چشمگیری به دیباگ کردن کمک می‌کند. در موقعیت‌هایی که می‌دانید منبع خطا از نوع مشخصی خواهد بود، می‌توانید یکی از انواع خطای داخلی را ایجاد کنید، اما باز هم باید پیامی معنادار بگنجانید.

این تمرین به‌طور خاص لازم می‌داند که از دستور raise استفاده کنید و اگر به تابع classify() عددی داده شود که عدد صحیح مثبت نیست، یک ValueError «پرتاب» کنید. تست‌ها فقط وقتی قبول می‌شوند که هم exception را raise کنید و هم پیامی همراه آن بگنجانید.

برای raise کردن یک ValueError همراه با پیام، پیام را به‌عنوان آرگومان به نوع exception بدهید:

# if a number to be classified is less than 1.
raise ValueError("Classification is only possible for positive integers.")
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Python Exercism

آماده‌اید اعداد تام را شروع کنید؟

در Exercism ثبت‌نام کنید تا Python را همراه با 17 مفهوم146 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.