# -*- coding:utf-8 -*- __projet__ = "Seance 6 - Chaines et tuples" __nom_fichier__ = "palindrome" __author__ = "Christine Fay-Varnier" __date__ = "novembre 2022" def palindrome_V0(mot): """ @param mot: mot sous forme de chaînes de caractères @return: True si est un palindrome c'est à dire s'il peut se lire de la gauche vers la droite aussi bien que de la droite vers la gauche False sinon """ # parcours de la chaine et comparaison des letres symétriques for i in range(len(mot)//2): # on parcourt le mot jusqu'au milieu et on compare les lettres de chaque côté if mot[i] != mot[-i - 1]: return False return True def palindrome_V1(mot): """ @param mot: mot sous forme de chaînes de caractères @return: True si est un palindrome c'est à dire s'il peut se lire de la gauche vers la droite aussi bien que de la droite vers la gauche False sinon VERSION 2 """ # on construit les deux parties gauche et droite du mot milieu = len(mot) // 2 # indice de la lettre du milieu debut = mot[:milieu] fin = mot[milieu + len(mot)%2:] # permet de distinguer les mots de longueur paire ou impaire if debut == fin[::-1]: # on inverse la 2ème partie return True return False def palindrome(mot): """ @param mot: mot sous forme de chaînes de caractères @return: True si est un palindrome c'est à dire s'il peut se lire de la gauche vers la droite aussi bien que de la droite vers la gauche False sinon VERSION dans laquelle on retourne le mot à tester """ mot_renverse = mot[::-1] return mot_renverse == mot if __name__ == '__main__': # mot = "elle" # mot = "rever" mot = "reveler" # mot = "y" # mot = "ici" if palindrome_V0(mot): print(mot, "est un palindrome") else: print(mot, "n'est pas un palindrome") if palindrome_V1(mot): print(mot, "est un palindrome") else: print(mot, "n'est pas un palindrome") if palindrome(mot): print(mot, "est un palindrome") else: print(mot, "n'est pas un palindrome")