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 :

Position d'une lettre dans un mot


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Points : 7
    Points
    7
    Par défaut Position d'une lettre dans un mot
    Bonjour,

    Voilà je voulais savoir s'il existait une fonction sur python qui permettrait de donner la position d'une lettre dans un mot.
    Genre si on tapes la lettre "o", il donnerait la position dans le mot "mouton", c'est à dire 2 et 5 dans ce cas là.
    Ou une fonction similaire ?

    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Pour trouver une seule position (numérotée à partir de 0):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mot = "mouton"
    print mot.find('o')
    1
    Si la lettre n'est pas trouvée, renvoie -1.

    Pour trouver la liste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    trouver = lambda mot, lettre: [i for i, car in enumerate(mot) if car==lettre]
    print trouver("mouton", 'o')
    [1, 4]
    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    merci bcp de ton aide.
    Je souhaiterais utilise le deuxieme pour la liste. Mais qu'est ce que tu appelles LETTRE, que signifie i pour i
    et ton code n'affiches que la recherche de la lettre O dans le mot peu importe ce que l'on tape ? Je pourrais mettre lettre=raw_input() est remplacer ?
    Et comment je pourrais réutilisé les chiffres que cette fonction me donne.
    Que dois je taper pour utiliser la premier, deuxieme troisieme etc chiffre de la liste que l'on trouve grace à ton truc.
    Merci !

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai fabriqué une fonction avec lambda:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trouver = lambda mot, lettre: [i for i, car in enumerate(mot) if car==lettre]
    L'avantage est que ça tient sur une seule ligne, mais on aurait pu fabriquer la même fonction avec l'opérateur 'def'.

    Quand j'exécute trouver("mouton", "o"), la variable mot est initialisée à "mouton" et la variable lettre est initialisée à "o". Ce qui fait que j'aurais trouvé aussi la lettre "r" dans arbre avec trouver("arbre","r").

    Ce qui suit le ':' après lambda est une "compréhension de liste" (http://fr.wikipedia.org/wiki/Compr%C...nsion_de_liste). Il faut la lire comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [
    i
    for i, car in enumerate(mot)
    if car==lettre
    ]
    Grâce à enumerate, le 'for' ici va balayer en boucle les couples de valeurs (0,'m'), (1,'o'), (2,'u'), ..., (5,'n') en affectant la 1ère valeur à 'i' et la seconde à 'car'. Le 'i' n'est enregistré dans la liste finale que quand la lettre affectée à 'car' est égale à 'o'. Donc, seuls les couples (1,'o') et (4,'o') marcheront, et on trouvera donc [1,4] comme résultat final.

    Une fois cette liste L=[1,4] obtenue, on peut accéder à chacune des valeurs 1 et 4 avec: L[0] qui donne 1 et L[1] qui donne 4.

    Je te suggère d'apprendre les base du langage avec un tuto comme celui de Swinnen situé sur ce site:

    http://python.developpez.com/cours/TutoSwinnen/

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    @tyrtamos
    Juste pour rajouter un lien pour lambda et un pour les list comprehension qui ne sont pas très abordables d'un premier abord.

    @yannjuve
    Sinon cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def trouve(mots, lettre): # Fonction qui correspond à lambda
        indextrouves = [] # indextrouves correspond à i dans le code de tyrtamos. Ici une liste.
        for index, caractere in enumerate(mots): # enumerate retourne le tuple index/caractere. Attention, l'index commence à zero.
            if caractere == lettre:
                indextrouves.append(index) # Si le caractere correspond à la lettre on mets sons index d'en 'i'.
        return indextrouves # Retourne les index.
     
    mots=raw_input("Le mots : ")
    lettre=raw_input("Lettre à trouver : ")
    resultat = trouve(mots, lettre) # Utilise la fonction trouve
    print resultat
    # Ou encore > print trouve(mots, lettre)
    +1 Pour le tuto.

    Bonne découverte.
    Merci d'utiliser le forum pour les questions techniques.

  6. #6
    Membre régulier
    Homme Profil pro
    retraité développement loisirs
    Inscrit en
    Janvier 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité développement loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 147
    Points : 85
    Points
    85
    Par défaut
    Bonjour,
    géniale et super bien expliquée ta solution Tyrtamos
    merci d'un autre débutant.
    concernant l'apprentissage, je sais que ce sujet a 10 ans
    Citation Envoyé par tyrtamos Voir le message

    Je te suggère d'apprendre les base du langage avec un tuto comme celui de Swinnen situé sur ce site:

    http://python.developpez.com/cours/TutoSwinnen/

    Tyrtamos
    il me semble que le livre tuto de Swinnen est en python 2, c'est embêtant ???
    n'existe-t-il pas une mise à jour en python 3 ?

  7. #7
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par luckyalan Voir le message
    il me semble que le livre tuto de Swinnen est en python 2, c'est embêtant ???
    n'existe-t-il pas une mise à jour en python 3 ?
    Et oui, il s'est passé beaucoup de choses depuis 10 ans

    => https://python.developpez.com/cours/apprendre-python3/

    => https://inforef.be/swi/python.htm

    On peut acheter le livre en version papier, ou télécharger librement le pdf (ne pas oublier les exercices!)
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/01/2014, 13h11
  2. [Turbo Pascal] Trouver une lettre dans un mot
    Par lediamant dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 03/11/2009, 16h46
  3. Trouver une lettre dans un mot
    Par frankthechamp dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 27/04/2009, 23h23
  4. position d'une lettre dans une chaine de caractaire
    Par zidenne dans le forum Delphi
    Réponses: 3
    Dernier message: 14/08/2006, 10h18
  5. [PERL] connaitre la position d'une lettre dans un mot
    Par LE NEINDRE dans le forum Langage
    Réponses: 3
    Dernier message: 24/03/2006, 16h03

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