IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Détecter un mot en palindrome


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2018
    Messages : 27
    Par défaut Détecter un mot en palindrome
    Bonjour,

    Je vais écrire une fonction pour vérifier si un mot est un palindrome (comme "radar", "elle"). Dans la premier code, j'ai utilisé "for", cela marche quand je teste un mot comme "elrtle" (bien-sur, ce mot n'existe pas, mais c'est juste un test) qui n'est pas un palindrome, mais il est détecté comme un palindrome dans mon 2e code (avec while).
    Je pense que dès qu'il détecte la première position m[o] et la dernière position m[-1] est le meme caractère, il affiche que c'est un palindrome.
    Comment puis je corriger ? Merci beaucoup


    code 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    def palindrom(m):
    	for i in range(len(m)):
    		if m[i]!= m[-i-1]:
    			return False
    	return True
    print (palindrom("elrtle"))
    code 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def palindrom(m):
        longueur = len(m)
        i = 0
        result = True
     
        while i < longueur:
            if m[i]!= m[-i-1]:
                return result and False     
            else:
                return result        
            i = i + 1
    print (mot("eltlle"))

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur banc de test
    Inscrit en
    Mai 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur banc de test
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 199
    Par défaut
    Bonjour,

    dans le deuxième code le else doit poursuivre la boucle while pour vérifier les autres caractère tant que le critère i < longueur et que m[i]!= m[-i-1] est faux.

    Du coup le else ne sert pas ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def palindrom(m):
        longueur = len(m)
        i = 0
     
        while i < longueur:
            if m[i]!= m[-i-1]:
                return False 
            i = i + 1
        return True
    Tout comme le premier code, le return False va stopper la boucle dès qu'il trouve une différence plutôt que d'attendre la fin pour retourner un résultat.

  3. #3
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2016
    Messages : 21
    Par défaut
    Bonjour,

    Sans for, ni while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    def palindrome(m):
        if m==m[::-1]:
            return True
        else:
            return False
     
    print (palindrome("ere"))
    True
    print (palindrome("eltlle"))
    False
    Plus court encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def palindrome(m):
    	return True if m==m[::-1] else False
    print (palindrome("ere"))
    True
    print (palindrome("eltlle"))
    False
     print(palindome("ablewasiereisawelba"))
    True
    ablewasiereisawelba c'est : Able was I ere I saw Elba, phase palindrome que j'ai apprise il y a bien longtemps...

    Bye

  4. #4
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2018
    Messages : 27
    Par défaut
    Bonjour,

    Que signifie cela ? Merci


  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Hrod69 Voir le message
    Plus court encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def palindrome(m):
    	return True if m==m[::-1] else False
    Plus court encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    palindrome=lambda m: m==m[::-1]


    Citation Envoyé par Hrod69 Voir le message
    ablewasiereisawelba c'est : Able was I ere I saw Elba, phase palindrome que j'ai apprise il y a bien longtemps...
    Esope reste ici et se repose => et là tu as un palindrome en français...

    Citation Envoyé par lucie34 Voir le message
    Que signifie cela ?
    Il s'agit d'une comparaison entre le mot lu dans le sens gauche vers droite et le mot lu dans le sens droite vers gauche. Si la comparaison est identique, c'est que le mot est un palindrome.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2018
    Messages : 27
    Par défaut
    Merci, mais je ne comprends pas ici, -1, le sens pour ce 3e élément dans une liste.

    Ce que j'ai compris dans une liste comme [1 : 10 : 2], on cherche la position de 1 à 10, puis on s'affiche pour les deux chiffres.

    Si on met -2, comme [::-2], que cela signifie ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. verification si le mot est palindrome
    Par Echap dans le forum Débuter
    Réponses: 5
    Dernier message: 02/04/2009, 14h01
  2. [RegEx] Détecter des mots séparés par différents espaces
    Par lorange dans le forum Langage
    Réponses: 4
    Dernier message: 03/03/2009, 21h20
  3. Réponses: 7
    Dernier message: 29/06/2008, 12h57
  4. Réponses: 23
    Dernier message: 23/01/2006, 21h31
  5. Tester si un mot est palindrome
    Par imeys dans le forum Langage
    Réponses: 2
    Dernier message: 22/11/2005, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo