Döntsd el egy számról, hogy Nikomakhosz (i. sz. 60–120) pozitív egészekre vonatkozó osztályozási rendszere alapján tökéletes, bővelkedő vagy hiányos-e.
A görög matematikus, Nikomakhosz a pozitív egészek osztályozására dolgozott ki egy rendszert, amelyben minden szám a valódi osztók összege alapján egyértelműen a tökéletes, a bővelkedő vagy a hiányos kategóriák valamelyikébe tartozik.
A valódi osztók összege a szám önmagát nem tartalmazó osztóinak összege.
Például a 15 esetében a valódi osztók összege 1 + 3 + 5 = 9.
Egy szám akkor tökéletes, ha megegyezik a valódi osztóinak összegével. Például:
6 tökéletes szám, mert 1 + 2 + 3 = 6
28 tökéletes szám, mert 1 + 2 + 4 + 7 + 14 = 28
Egy szám akkor bővelkedő, ha kisebb a valódi osztóinak összegénél. Például:
12 bővelkedő szám, mert 1 + 2 + 3 + 4 + 6 = 16
24 bővelkedő szám, mert 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36
Egy szám akkor hiányos, ha nagyobb a valódi osztóinak összegénél. Például:
8 hiányos szám, mert 1 + 2 + 4 = 7
Készíts egy megoldást, amely meghatározza, hogy egy adott szám tökéletes-e. A kurzustól függően arra is szükség lehet, hogy megállapítsd egy adott számról, bővelkedő-e vagy hiányos.
Néha szükség van arra, hogy kivételt dobj. Ilyenkor mindig adj meg egy beszédes hibaüzenetet, amely jelzi, mi a hiba forrása. Ettől olvashatóbb lesz a kódod, és a debuggingot is jelentősen megkönnyíti. Ha tudod, hogy a hiba forrása egy adott típus lesz, dobhatod a beépített hibatípusok egyikét is, de ilyenkor is adj meg egy beszédes üzenetet.
Ez a feladat megköveteli, hogy a raise utasítást használva „dobj” egy ValueError kivételt, ha a classify() függvénynek olyan számot adnak át, amely nem pozitív egész szám. A tesztek csak akkor lesznek sikeresek, ha a raise utasítást használod, és az exception mellett üzenetet is megadsz.
Ha egy ValueError kivételt üzenettel szeretnél dobni, írd meg az üzenetet az exception típus argumentumaként:
# if a number to be classified is less than 1.
raise ValueError("Classification is only possible for positive integers.")
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Python nyelvet 17 fogalom146 feladat segítségével, valódi emberi mentorálással, mindez ingyen.