Palindrome (corrigé)¶
Tester un mot pour vérifier s'il s'agit d'un palindrome¶
méthode :
il faut couper le mot en deux et tester les lettres 2 à 2 (en prenant la première et la dernière, ...) si tous les couples de lettres sont vérifiés, le mot est un palindrome.
⚠️ 2 cas peuvent se présenter :
- mot contient un nombre pair de lettres,
- mot contient un nombre impair de lettres. dans le cas d'un nombre impair, le découpage de mot doit se faire avec des nombres entiers de lettres.
Algorithme :
texte
mot : le mot à tester
FONCTION palindrome(mot):
n = longueur de la première moitié de mot
m2 = position de la lettre de départ de la seconde moitié de mot
est_palindrome = True
P1 est une pile
POUR i allant de 0 à n :
empiler dans P1 la lettre de mot à la position i
POUR i allant de m2 à longueur de mot :
dépiler P1
SI la lettre dépilée est différent de la lettre de mot à la position i
ALORS
est_palindrome = False
arrêter la boucle
RETOURNER est_palindrome
In [ ]:
Copied!
import Pile
def palindrome(mot):
"""
Permet de tester si un mot est un palindrome.
Parameters
----------
mot : string
Le mot à tester.
Returns
-------
est_palindrome : Bool
Vrai si le mot est un palindrome.
Faux si le mot n'est pas un palindrome.
"""
n = len(mot) // 2 # la moitié de la longueur du mot
d2 = n + (len(mot) % 2) # début de seconde moitié de la longueur
est_palindrome = True
P1 = Pile.Pile()
for i in range(n):
P1.empiler(mot[i]) # empilement de la 1ère moitié du mot
for i in range(d2, len(mot)): # pour chaque caractère de la 2nde moitié
if P1.depiler() != mot[i]: # Est-il différent que dans la 1ère
est_palindrome = False # Donc ce n'est un palindrome
break # On peut arrêter le test
return est_palindrome # On retourne la valeur Vrai ou Faux
#####################################
#
# Programme principal de test
#
#####################################
a = input("Donnez votre mot : ")
if palindrome(a):
print(a, "est un palindrome")
else:
print(a, "n'est pas un palindrome")
import Pile
def palindrome(mot):
"""
Permet de tester si un mot est un palindrome.
Parameters
----------
mot : string
Le mot à tester.
Returns
-------
est_palindrome : Bool
Vrai si le mot est un palindrome.
Faux si le mot n'est pas un palindrome.
"""
n = len(mot) // 2 # la moitié de la longueur du mot
d2 = n + (len(mot) % 2) # début de seconde moitié de la longueur
est_palindrome = True
P1 = Pile.Pile()
for i in range(n):
P1.empiler(mot[i]) # empilement de la 1ère moitié du mot
for i in range(d2, len(mot)): # pour chaque caractère de la 2nde moitié
if P1.depiler() != mot[i]: # Est-il différent que dans la 1ère
est_palindrome = False # Donc ce n'est un palindrome
break # On peut arrêter le test
return est_palindrome # On retourne la valeur Vrai ou Faux
#####################################
#
# Programme principal de test
#
#####################################
a = input("Donnez votre mot : ")
if palindrome(a):
print(a, "est un palindrome")
else:
print(a, "n'est pas un palindrome")