Determine se um número é perfect, abundant ou deficient, com base no esquema de classificação de Nicômaco (60 - 120 d.C.) para os números inteiros positivos.
O matemático grego Nicômaco criou um esquema de classificação para os números inteiros positivos, identificando cada um como pertencente de forma única às categorias perfect, abundant ou deficient, com base na sua soma dos divisores próprios.
A soma dos divisores próprios é definida como a soma dos divisores de um número, sem incluir o próprio número.
Por exemplo, a soma dos divisores próprios de 15 é 1 + 3 + 5 = 9.
Um número é perfect quando é igual à sua soma dos divisores próprios. Por exemplo:
6 é um número perfect porque 1 + 2 + 3 = 6
28 é um número perfect porque 1 + 2 + 4 + 7 + 14 = 28
Um número é abundant quando é menor que a sua soma dos divisores próprios. Por exemplo:
12 é um número abundant porque 1 + 2 + 3 + 4 + 6 = 16
24 é um número abundant porque 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36
Um número é deficient quando é maior que a sua soma dos divisores próprios. Por exemplo:
8 é um número deficient porque 1 + 2 + 4 = 7
Implemente uma forma de determinar se um dado número é perfect. Dependendo da sua trilha de linguagem, você também pode precisar implementar uma forma de determinar se um dado número é abundant ou deficient.
Às vezes é necessário levantar uma exceção. Quando você faz isso, deve sempre incluir uma mensagem de erro significativa para indicar qual é a origem do erro. Isso deixa seu código mais legível e ajuda bastante na depuração. Em situações em que você sabe que a origem do erro será de um certo tipo, você pode optar por levantar um dos tipos de erro internos, mas ainda deve incluir uma mensagem significativa.
Este exercício em particular exige que você use a instrução raise para "lançar" um ValueError se a função classify() receber um número que não seja um inteiro positivo. Os testes só vão passar se você fizer raise da exception e também incluir uma mensagem com ela.
Para levantar um ValueError com uma mensagem, escreva a mensagem como argumento do tipo exception:
# if a number to be classified is less than 1.
raise ValueError("Classification is only possible for positive integers.")
Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.