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 :

Recherche et comparaison dans un dictionnaire


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 133
    Par défaut Recherche et comparaison dans un dictionnaire
    Bonjour,

    Voilà, je dois développez un algorithme et j'en bave. Après des problèmes de graphique... , j'ai un problème d'algorithme.
    Je vais essayer de vous expliquer en gros:

    Je dispose d'une variable que je nomme texte. Dans cette variable, il y a une phrase. Avec une boucle, je traite une par une chaque lettre que j'ajoute dans un tuple ( je crois que c'est le mot qui convient...) Voici un exemple pour que ça soit plus explicite:

    phrase = "Le cheval est vert."
    a = 0
    b = []
    while a != len(phrase):
    b.append(phrase[a])

    Ce qui nous donne donc : b = ["L","e"," ","c","h" etc.... ]
    Ce que j'aimerai maintenant c'est comparer chaque lettre du tuple b avec la position de cette même lettre dans un "dico-tuple".

    Par exmple:
    Voici le dico-tuple:
    c = ["a","b","c","d","e","f","g","h","i","j","k","l" etc.. jusqu'à z]

    Maintenant, dans le tuple b, "L" est la permière lettre, je compare au dico-tuple. Dans ce dico, la lettre "l" est à la 11eme place ( en partant de 0 et dans l'ordre de l'alphabet. ), donc je crée un autre tuple que j'appelle d et où je remplace la lettre par sa position de l'alphabet comme j'ai mis plus haut:

    d devient donc:
    d = [11,4," ",2,etc... jusqu'à la fin du message...]

    Si je me suis pas bien expliqué et j'en suis conscient, n'hésitez pas à me le dire...
    Merci de votre aide...

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 89
    Par défaut ton code mais en plus court :-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import string
     
    alphabet = string.ascii_letters[0:26]
    phrase = "Le cheval est vert."
    d=[alphabet.find(l.lower()) for l in list(phrase)]
    print d
    alphabet est une liste comprenat les 26 lettres minuscules

    explication : ceci est une list comprehension.
    C'est plus concis et surtout beaucoup plus rapide !

    découpage :
    d=[] d est une liste
    alphabet.find retourne la position de la lettre l (qui au passage est convertie en minuscule via lower()) passée en argument.
    cette opération est répétée pour toutes les lettres l de la liste (list(phrase)) équivalent de ta liste b construite avec ton code :
    a = 0
    b = []
    while a != len(phrase):
    b.append(phrase[a])

    Voilà a++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 133
    Par défaut
    Salut jpcw2002,

    Merci de ton aide et de ta réponse, je l'essaie sur le champ, et je t'en dis plus.

    Message réédité :
    Ca marche impec'. Merci bien

    C'est possible de retourner l'opération ? En fait, quand j'obtiens d, j'effectue un calcul et j'aimerai à partir des nouveaux nombres obtenus les retourner en lettre ( Principe de la cryptographie affine. ).

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Simplement l'opération inverse? De d vers phrase?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import string
     
    alphabet = string.ascii_letters[:26]
    alphabet.append(' ') # pour l'indice -1, sinon ça donne z
     
    d = [11, 4, -1, 2, 7, 4, 21, 0, 11, -1, 4, 18, 19, -1, 21, 4, 17, 19, -1] #généré d'après le code de jpcw2002
    phrase = ''.join([alphabet[x] for x in d])
    print phrase

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 133
    Par défaut
    Bonjour,

    oui de d vers phrase. Merci pour le bout de code je l'essai.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 133
    Par défaut
    Bonjour,

    Tout marche impécablement. Merci beaucoup !!!!

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

Discussions similaires

  1. Recherche de mot commençant par une chaine dans un dictionnaire
    Par ram-0000 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 20/04/2012, 18h09
  2. Recherche dans un dictionnaire
    Par kimiko-coréen dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/04/2011, 00h17
  3. Opérateur de comparaison dans un dictionnaire
    Par Guillaume M dans le forum Général Python
    Réponses: 6
    Dernier message: 17/09/2008, 15h53
  4. Une variable dans un dictionnaire, et faire recherche
    Par ploop dans le forum Général Python
    Réponses: 4
    Dernier message: 30/06/2007, 19h01
  5. Rechercher un mot dans un dictionnaire
    Par NeMo_O dans le forum C
    Réponses: 4
    Dernier message: 10/02/2007, 15h31

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