J'ai un problème avec mon programme python

Bonjour, je suis en terminale et j'ai un devoir maison sur python mais je ne comprend pas ou est mon erreur dans mon programme. Est-ce que queulqu'un pourrait m'expliquer merci d'avance.

Le but est que la fonction return True si le mot est un palindrome et False si se n'en est pas un. Cependant je dois supprimer les caractères spéciaux avant de tester s'il sagit d'un palindrome et justement c'est la que je bloque.

voila mon programme:

def palindrome(x):

      n="".join(char for char in x if x.isalnum())

      print(n)

      for i in range(len(n)//2):

            if n[i] != n[-i]:

             return False

      return True


Macintosh / Safari 15.5

9 réponses

  1. A mon avis, tu as fait une erreur en recopiant

    L'instruction avec isalnum fonctionne bien à condition d'appliquer isalnum à la bonne variable et pas à x

    qui contient la chaine entière

    En cherchant la même chose que toi dans Google, on voit l'instruction correcte :-)

    Recopier un code, c'est bien, mais comprendre ce qui s'y passe c'est mieux, à moins que tu fasses ça comme

    un exercice parmi tant d'autres et que la programmation ne t'intéresse pas plus que ça...

    En tout cas le but du site est de donner des pistes, pas la solution toute faite

    Il faut que tu analyse un peu le truc

    1. Je veux bien essayer de comprendre mais si on ne m’explique pas mon erreur c’est compliqué.

    2. Jai finalement réussi en transformant la ligne 

      j’ai mis:

      n=“”.join(e for e in x if e.isalnum())

    3. @Mattcazor

      Bonjour,

      Tu aurais même pu laisser 

      n="".join(char for char in x if char.isalnum())

      mais en mettant char à la place de x

      Mais as-tu compris ce qui se passe dans cette instruction, au moins ?

  2. Salut,

    Dans cette ligne il y a une erreur faisant que ça ne fonctionne pas :

    n="".join(char for char in x if x.isalnum())

    Analyse bien à quoi doit être appliqué le isalnum()

    1. Merci mais je ne sais pas utiliser isalnum, je ne connais pas bien son fonctionnement c’est pour ça que je demande de l’aide.

  3. Non je ne comprend pas mon erreur je sais qu’elle se trouve à cette endroit là mais je n’ai jamais travaille ça en cour donc je ne connais pas son fonctionnement.

    1. Ah ok, tu as écrit cette instruction mais tu ne sais pas ce que ça veut dire ?

      Si tu ne comprends pas isalnum(), tu peux toujours aller voir sur le Net 

      En fait truc.isalnum() vérifie si truc contient ou pas des caractères alphanumériques

      On t'a donné cet exo alors que ça n'a pas été vu en cours ?

      1. Justement c’est Google qui m’a dit d’écrire ça mais s’il te plaît piurrai tu m’expliquer toi car je vais pas te mentir que j’ai déjà du retard sur le dm et je ne sais pas si il va m’accepter.

        1. Il t'a dit d'écrire ça:

          n="".join(char for char in x if x.isalnum())

          ????

          Pas possible puisqu'il y a une erreur là-dedans

          1. Oui je le jure c’est comme ça qu’on m’a donné la ligne de code.

            1. il est où ton site ?

              1. Je ne me souviens plus j’avais simplement taper “comment retirer les caractères spéciaux Python”