J'ai un problème avec mon programme python

mattcazor -  
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   -

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

Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

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
Mattcazor
 

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

0
Mattcazor
 

Jai finalement réussi en transformant la ligne 

j’ai mis:

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

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168 > 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 ?

0
rinolu
 

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()

0
Mattcazor
 

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.

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

Bonjour Mattcazor,

Alors, tu as trouvé ?

0
Mattcazor
 

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.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

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 ?

0
Mattcazor
 

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.

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

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

0
Mattcazor
 

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

0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 

il est où ton site ?

0
Mattcazor
 

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

0