Outils pour utilisateurs

Outils du site


prog:python:palindrome

Variations autour du palindrome

Télécharger le fichier : palindrome.py

Déterminer si une phrase fournie par l'utilisateur est un palindrome, en 4 variantes.

  • parcours classique de la chaîne, tel qu'on l'écrirait en C par exemple
  • parcours de la chaîne mais la notation des indices est plus spécifique à python
  • utiliser les fonction sur les chaînes de caractères de Python : comparaison de la chaîne et de son miroir
  • fonction récursive
Voir le programme
"""
 
Variations autour du palindrome
JBP - 03/2019
 
"""
 
 
def nettoyage(phrase):
    # Fonction de nettoyage d'une chaîne de caractères :
    # Supprime les caractères inutiles, passe en minuscules
    # Remplace les caractères accentués par le caractère correspondant
    phrase = phrase.replace(" ", "")
    phrase = phrase.replace("'", "")
    phrase = phrase.replace(",", "")
    phrase = phrase.replace(";", "")
    phrase = phrase.replace(":", "")
    phrase = phrase.replace("!", "")
    phrase = phrase.replace("?", "")
    phrase = phrase.replace(".", "")
    phrase = phrase.replace("-", "")
    phrase = phrase.lower()
    phrase = phrase.replace("é", "e")
    phrase = phrase.replace("è", "e")
    phrase = phrase.replace("ê", "e")
    phrase = phrase.replace("ë", "e")
    phrase = phrase.replace("à", "a")
    phrase = phrase.replace("â", "a")
    phrase = phrase.replace("î", "i")
    phrase = phrase.replace("ï", "i")
    phrase = phrase.replace("ô", "o")
    phrase = phrase.replace("ù", "u")
    phrase = phrase.replace("û", "u")
    phrase = phrase.replace("ü", "u")
    phrase = phrase.replace("ç", "c")
    return phrase
 
 
ph = input("Phrase : ")
ph = nettoyage(ph)
print("Phrase nettoyée :", ph)
i = 0
long = len(ph)
 
 
# Méthode 1 : parcours classique de la chaîne
while i < long/2:
    if (ph[i] == ph[long-1-i]):
        pal = True
    else:
        pal = False
        break
    i = i+1
 
if pal:
    print("Palindrome")
else:
    print("Pas palindrome")
 
# Méthode 2 : parcours de la chaîne, notation plus python
while i < long/2:
    if (ph[i] == ph[-1-i]):
        pal = True
    else:
        pal = False
        break
    i = i+1
 
if pal:
    print("Palindrome")
else:
    print("Pas palindrome")
 
# Méthode 3 : comparaison de la chaîne et de son miroir, encore plus python
ph2 = ph[::-1]
if ph2 == ph:
    print("Palindrome")
else:
    print("Pas palindrome")
 
 
# Méthode 4 : fonction récursive
def palindrome(phrase):
    if phrase[0] == phrase[-1]:
        pal = True
        if len(phrase) > 2:
            pal = palindrome(phrase[1:-1])
    else:
        pal = False
    return pal
 
 
if palindrome(ph):
    print("Palindrome")
else:
    print("Pas palindrome")
 
prog/python/palindrome.txt · Dernière modification : 2020/04/16 13:35 de jbpuel