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 :

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 Mot en palindrome
    Bonjour,

    Ce code est pour détecter un mot en palindrom. Quel est utilité de "t = 0" ?
    Pourquoi on écrit "t = 1", mais non "t = 0" dans if ? Merci

    Peut-on utiliser "return" dans un programme sans utiliser la fonction ? Je l'avais fait au départ, mais j'ai eu une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mot = "sos"
    i = 0
    long = len(mot)
    t = 0
    while i < long :
        if mot[i] != mot[long-i-1]:
            t = 1
        i = i + 1
     
    if t == 1:
        print("non")
    else :
        print("oui")

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Essayer d'exécuter ces instructions comme le ferait la machine en notant les différentes étapes sur une feuille de papier. Une fois avec mot = 'sos' (comme dans l'exemple) puis une autre fois avec le mot = 'tutu' (qui n'est pas un palindrome). Normalement vous allez pouvoir visualiser les cas où la condition est vraie (et où on assigne 1 à t) et par où passe le code.

    Sinon vous pouvez aussi répondre à vos questions en jouant avec le code:
    Quel est utilité de "t = 0" ?
    Vous mettez cette instruction en commentaire et vous essayez de le faire tourner, il va se passer des choses...
    Pourquoi on écrit "t = 1", mais non "t = 0" dans if ?
    Pareil, vous modifiez le code, vous le lancez et vous essayez de comprendre le résultat.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    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
    J'avais déjà essayé plusieurs fois en mettant un palindrome ou non, et aussi changeant t = 0 ou t = 1, mais, parfois le résultat n'est pas ce que l'on attend. Je n'ai toujours pas compris ce que veut dire t = 0 ou t = 1 ?

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par lucie34 Voir le message
    Je n'ai toujours pas compris ce que veut dire t = 0 ou t = 1 ?
    Il s'agit d'un indicateur. On part d'une convention que "0" signifie "est palindrome". Ensuite on fait l'hypothèse que le mot est un palindrome et on cherche une preuve qu'il ne l'est pas. Si on trouve cette preuve, alors on met une autre valeur dans "t".
    Et au final on regarde la valeur de "t".

    Citation Envoyé par lucie34 Voir le message
    Pourquoi on écrit "t = 1", mais non "t = 0" dans if ?
    Ah je suis d'accord. Si on veut être logique avec ses conventions, il faudrait écrire effectivement if t == 0 puisque c'est l'hypothèse de départ. Toutefois, certains programmeurs aiment bien mettre en premier le cas qui arrive le plus souvent. Or il y a plus de mots qui ne sont pas palindromes que de mots palindromes. Donc si on veut appliquer cette technique tout en restant fidèle à sa logique, le test deviendrait alors if t != 0.
    Donc en effet rien en t'interdit de changer le test selon tes préférences et ton respect de tes propres conventions.
    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]

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par lucie34 Voir le message
    Je n'ai toujours pas compris ce que veut dire t = 0 ou t = 1 ?
    Ça ne veut rien dire de plus qu'assigner 0 à la variable t ou assigner 1 à la variable t pour noter que la condition a été au moins vérifiée une fois.
    Cette construction est tellement utilisée qu'avec Python, on peut écrire çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 0
    while i <= len(mot)//2:
        if mot[i] != mot[-(i+1)]:
            print(mot, "pas palindrome")
            break
        i += 1
    else:
        print(mot, "palindrome")
    Pas besoin de t pour traduire la condition est vraie pour toutes les itérations ou fausse pour au moins une.

    - W
    note: et il existe aussi des formes encore plus condensées comme any et all.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Bonjour,

    Comme il apparait clairement que l'utilisation de la variable t (en tant qu'indicateur) n'est pas claire , il suffirait de la renommer avec un nom plus explicite [Note: La solution de wiztricks est encore mieux ]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    mot = "sos"
    i = 0
    long = len(mot)
    est_un_palindrome = True
    while i < long :
        if mot[i] != mot[long-i-1]:
            est_un_palindrome = False
            # inutile d'aller plus loin
            break
        i = i + 1
     
    if est_un_palindrome:
        print("oui")
    else :
        print("non")

Discussions similaires

  1. Réponses: 14
    Dernier message: 14/11/2018, 20h43
  2. Détecter un mot en palindrome
    Par lucie34 dans le forum Général Python
    Réponses: 7
    Dernier message: 01/11/2018, 23h32
  3. Déterminer si un mot est un Palindrome
    Par alvanoto dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 28/05/2009, 13h37
  4. verification si le mot est palindrome
    Par Echap dans le forum Débuter
    Réponses: 5
    Dernier message: 02/04/2009, 14h01
  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