Exercice 87
Ecrire une fonction en langage Python : is_narcissistic(n) qui prend en argument un entier n > 0 et qui vérifie si le nombre n est narcissique (égal à la somme de ses chiffres élevés à la puissance du nombre de chiffres).
Exemple : 153 = 13 + 53 + 33 = 153, donc n=153 est un nombre narcissique). La fonction doit retourner True si le nombre n est narcissique et False sinon.
NB : On vous demande de traiter l'exercice de deux façons différentes: l'une en utilisant la fonction str() et l'autre sans utiliser cette dernière.
Solution
1ère méthode:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
def is_narcissistic(n): """Retourne True si n est narcissique. Précondition : n est un entier positif. """ digits = str(n) p = len(digits) total = 0 # parcourir les chiffres de n for d in digits: total = total + int(d)**p return total == n # Exemples print(is_narcissistic(153)) # True print(is_narcissistic(9474)) # True print(is_narcissistic(10)) # False |
2ème méthode:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
def is_narcissistic(n): # Précondition : n est un entier positif # 1. compter le nombre de chiffres temp = n p = 0 while temp > 0: p += 1 temp //= 10 # cas particulier n = 0 if p == 0: p = 1 # 2. calculer la somme des chiffres élevés à la puissance p temp = n total = 0 while temp > 0: digit = temp % 10 total += digit ** p temp //= 10 return total == n # Exemples print(is_narcissistic(153)) # True print(is_narcissistic(9474)) # True print(is_narcissistic(23)) # False |
Younes Derfoufi
CRMEF OUJDA



