Exercice 23
Écrire algorithme en langage Python sous forme de fonction est_palindrome(n) qui prend en paramètres un entier positif n et détermine si ce nombre est palindrome, c'est-à-dire s'il se lit identiquement de gauche à droite et de droite à gauche. La fonction retourne True si c'est le cas, False sinon.
Exemple : est_palindrome(121) retourne True, est_palindrome(123) retourne False.
Solution
Pour savoir si un nombre est palindrome, on doit vérifier que sa lecture de gauche à droite est identique à celle de droite à gauche. La première méthode consiste à convertir le nombre en chaîne de caractères (avec str()), puis à comparer cette chaîne à son inverse. La seconde méthode n’utilise pas str(), on va donc extraire les chiffres du nombre un à un en utilisant l’opérateur modulo %, reconstruire le nombre à l’envers, puis comparer ce résultat avec le nombre original. Dans les deux cas, on retourne True si le nombre est palindrome, sinon False.
Méthode 1 : En utilisant la fonction str()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def est_palindrome(n): # On convertit le nombre en chaîne de caractères chaine = str(n) # On compare la chaîne avec sa version inversée # [::-1] permet d’inverser la chaîne if chaine == chaine[::-1]: return True else: return False # Exemples de test print(est_palindrome(121)) # True car 121 se lit pareil dans les deux sens print(est_palindrome(123)) # False car 123 ≠ 321 |
Méthode 2 : Sans utiliser la fonction str()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def est_palindrome(n): original = n # On sauvegarde la valeur initiale de n inverse = 0 # Variable qui contiendra l'inverse du nombre # Tant que n contient encore des chiffres while n > 0: chiffre = n % 10 # On récupère le dernier chiffre de n inverse = inverse * 10 + chiffre # On ajoute ce chiffre à l'inverse n = n // 10 # On enlève le dernier chiffre de n # Si le nombre inversé est égal au nombre original, c'est un palindrome return inverse == original # Exemples de test print(est_palindrome(121)) # True print(est_palindrome(123)) # False |
Younes Derfoufi
CRMEF OUJDA



