Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Python, palindrome

  1. #1
    hatsukoi

    Python, palindrome

    Bonsoir, je me prépare à un DS ( demain ) d'informatique, où nous devrons utiliser le langage python et les chaines ( string ) pour écrire des petits programmes.
    Dans un exercice nous avons donc appris à écrire un programme permettant de déterminer si un mot est un palindrome ou pas ( si vous voulez que je vous l'écrive dites le moi ) et je me posais donc la question de savoir si on peut faire la même chose avec une phrase ( par exemple " tu l'as trop écrasé, césar, ce port-salut " ) donc je pense qu'il faut tout simplement " retirer " les espaces, la ponctuation, dont les apostrophes, et aussi les accents. mais cela me pose donc un problème... est-ce possible de retirer ces caractères ? Avez vous des idées ?
    Merci d'avance pour les réponses

    -----


  2. Publicité
  3. #2
    Arzhur

    Re : Python, palindrome

    Bonjour,


    Oui c'est possible, qu'est-ce qui te pose problème ?

  4. #3
    hatsukoi

    Re : Python, palindrome

    Bonjour,
    Ce qui me pose problème est comment faire pour retirer les espaces et la ponctuation.. Après pour les accent dans le palindrome j'ai la solution mais il me semble que sur une chaine de caractère on ne peut pas " supprimer" des caractères ( peut etre que je me trompe ? ). On a appris peu de choses en informatique et du coup je ne vois vraiment pas comment faire, mon idée en tête est en gros de supprimer toute la ponctuation pour obtenir un " mot" où on peut l'inverser et donc voir si le mot inversé est le même.
    Merci d'avoir pris le temps de répondre

  5. #4
    Arzhur

    Re : Python, palindrome

    Ca depend comment est fait ton algorithme, pour t'aider je vois 2 trucs :

    utiliser la fonction "replace" de python qui permet de remplacer un caractère par un autre (genre un caractère spécial par un "vide").

    parcourir ta phrase comme un tableau en ignorant les caractères spéciaux.

  6. #5
    hatsukoi

    Re : Python, palindrome

    je propose cela :
    def palind(a):
    c=""
    a.replace("é","e")
    a.replace(" ","")
    a.replace("'","")
    a.replace(",","")
    for n in a:
    c=n+c
    return a==c

    mais les résultats sont tous négatif.. il y a t'il quelque chose que je n'ai pas saisi ?

    Pardon pour les indentations mais elles sont présentes dans le texte et s'effacent automatiquement..
    Dernière modification par hatsukoi ; 07/04/2014 à 20h35.

  7. #6
    Arzhur

    Re : Python, palindrome

    Un ptit tour sur la doc python : http://www.tutorialspoint.com/python/string_replace.htm en particulier la partie "Return Value".

    En tout cas tu y es presque


    EDIT : pour les indentations, les balises CODE sont là pour ça

  8. #7
    hatsukoi

    Re : Python, palindrome

    Ca y est ! j'ai réussi ! il fallait juste donner un nom à la chaîne modifiée ! car sinon la chaîne est modifiée que temporairement et donc à l'étape suivante la chaîne redevenait celle d'origine !
    Voilà mon programme fini :

    Code:
    def palind(a):
        c=""
        b=a.replace("é","e")
        b=b.replace(" ","")
        b=b.replace("'","")
        b=b.replace(",","")
        for n in b:
            c=n+c
        return b==c
    Merci beaucoup pour votre aide !

Discussions similaires

  1. Python
    Par xyXY dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 10/12/2012, 05h25
  2. Palindrome numéral.
    Par Electron1234 dans le forum Science ludique : la science en s'amusant
    Réponses: 19
    Dernier message: 07/12/2011, 19h06
  3. teste si une phrase est un palindrome en java
    Par narakphysics dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 04/06/2011, 11h56
  4. PDL pour Test de Palindrome
    Par dani04 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 01/03/2010, 18h05
  5. Python
    Par DrCoffee dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 13/03/2009, 11h55