====== Variations autour du palindrome ====== Télécharger le fichier : {{ :prog:python: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")