Exercice 17
Écrivez une fonction Python qui, pour un nombre entier donné, additionne les carrés de chacun de ses chiffres. Par exemple, pour n=123, la fonction renvoie 1² + 2² + 3² = 14. Fournissez deux versions de cette fonction utilisant des approches différentes.
Solution
Méthode 1 : Conversion en chaîne de caractères
|
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 |
def somme_carres_chiffres_methode1(n): """ Méthode 1 : Conversion du nombre en chaîne de caractères Cette méthode convertit le nombre en chaîne pour traiter chaque chiffre individuellement. Args: n (int): Le nombre entier d'entrée Returns: int: La somme des carrés des chiffres du nombre """ # Conversion du nombre en valeur absolue pour gérer les nombres négatifs n = abs(n) # Conversion du nombre en chaîne de caractères chaine_nombre = str(n) # Initialisation de la somme somme = 0 # Parcours de chaque caractère dans la chaîne for chiffre in chaine_nombre: # Conversion du caractère en entier, calcul du carré et ajout à la somme somme += int(chiffre) ** 2 return somme |
Méthode 2 : Utilisation des opérations mathématiques
|
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 somme_carres_chiffres_methode2(n): """ Méthode 2 : Utilisation des opérations mathématiques Cette méthode utilise la division et le modulo pour extraire les chiffres. Args: n (int): Le nombre entier d'entrée Returns: int: La somme des carrés des chiffres du nombre """ # Conversion en valeur absolue pour gérer les nombres négatifs n = abs(n) # Initialisation de la somme somme = 0 # Boucle tant qu'il reste des chiffres à traiter while n > 0: # Extraction du dernier chiffre avec l'opérateur modulo 10 dernier_chiffre = n % 10 # Ajout du carré du chiffre à la somme somme += dernier_chiffre ** 2 # Suppression du dernier chiffre avec la division entière par 10 n = n // 10 return somme |
Younes Derfoufi
CRMEF OUJDA



