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

Discussion :

recherche dans une liste


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    autodidacte
    Inscrit en
    décembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : décembre 2018
    Messages : 100
    Points : 49
    Points
    49
    Par défaut recherche dans une liste
    Bonjour à tous,
    J'essai de faire une simple recherche dans une liste avec une condition qui affiche que si value == l'élément de recherché, mais je n'arrive pas a comprendre pourquoi ça ne fonctionne pas pouvez vous m'éclairer s'il vous plait Merci de votre aide

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    # -*-coding:Utf-8 -*
     
    import os
    from os import system
    import sys
    import threading
    import time
     
    Lcache = []
     
    cache = 0
    recherche_dans_cache = 0
     
    def le_cache () :
     
        while True :
     
            if recherche_dans_cache != 0 :
     
                for index, value in enumerate(Lcache) :
                    if value == recherche_dans_cache :
                        cache = recherche_dans_cache
                        id = index
                    else :
                        cache = "absent"
     
    t3 = threading.Thread(target = le_cache)
     
    t3.start()
     
    Lcache.append("a")
    Lcache.append("b")
    Lcache.append("c")
    Lcache.append("d")
    Lcache.append("e")
    Lcache.append("f")
     
    recherche_dans_cache = input()
     
    time.sleep(5)
     
    if recherche_dans_cache == cache :
        print ("recherche avec succès")
        print (cache)
        print (id)
     
    else :
        print ("l'élément n'est pas présent")
        print (cache)
     
    t3.join()

  2. #2
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 207
    Points : 23 970
    Points
    23 970
    Par défaut
    Salut,

    Citation Envoyé par haku972 Voir le message
    mais je n'arrive pas a comprendre pourquoi ça ne fonctionne pas
    Parce que, par défaut, la portée des variables d'une fonction est locale.

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

  3. #3
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    juin 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2013
    Messages : 1 066
    Points : 1 407
    Points
    1 407
    Par défaut
    Donc 2 solutions :
    - la pire, passer la variable en global
    - mettre un return en fin de fonction et modifier le code pour afficher le résultat.
    Un bon tuto et quelques heures d'investissement s'imposent.
    Pas d'aide par mp.

  4. #4
    Membre du Club
    Homme Profil pro
    autodidacte
    Inscrit en
    décembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : décembre 2018
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Mais je pensais avoir mis cache et recherche_dans_cache en global, ce n'est pas suffisant?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    juin 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2013
    Messages : 1 066
    Points : 1 407
    Points
    1 407
    Par défaut
    Citation Envoyé par haku972 Voir le message
    Mais je pensais avoir mis cache et recherche_dans_cache en global, ce n'est pas suffisant?
    Non.
    Pas d'aide par mp.

  6. #6
    Membre du Club
    Homme Profil pro
    autodidacte
    Inscrit en
    décembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : décembre 2018
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Je me suis corrigé, mais la recherche dans la liste ne se fait pas et me met cache = "absent" quelque soit se que je met en recherche, je ne comprends pas pourquoi , j'ai encore besoin d'aide s'il vous plait

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    # -*-coding:Utf-8 -*
     
    import os
    from os import system
    import sys
    import time
     
    Lcache = []
     
    cache = ""
    recherche_dans_cache = ""
    id = 0
     
    Lcache.append("a")
    Lcache.append("b")
    Lcache.append("c")
    Lcache.append("d")
    Lcache.append("e")
    Lcache.append("f")
     
    recherche_dans_cache = input()
     
    if recherche_dans_cache != 0 :
     
        for index, value in enumerate(Lcache) :
            if value == recherche_dans_cache :
                cache = recherche_dans_cache
                id = index
            else :
                cache = "absent"
     
     
    time.sleep(5)
     
    if recherche_dans_cache == cache :
        print ("recherche avec succès")
        print (cache)
        print (id)
     
    else :
        print ("l'élément n'est pas présent")
        print (cache)

  7. #7
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    juin 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2013
    Messages : 1 066
    Points : 1 407
    Points
    1 407
    Par défaut
    Tu veux faire un truc dans ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Lcache = ["a","b","c","d","e","f"]
     
    recherche = input()
    for index,el in enumerate(Lcache):
        print(index,el)
        if el == recherche:
            print("----------------------------------------")
            print("L'élément est présent en position : ", index)
    ?
    Pas d'aide par mp.

  8. #8
    Membre du Club
    Homme Profil pro
    autodidacte
    Inscrit en
    décembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : décembre 2018
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Mais pourquoi mon code ne fonctionne pas ?

  9. #9
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    juin 2013
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2013
    Messages : 1 066
    Points : 1 407
    Points
    1 407
    Par défaut
    Ajoute des "print(cache)" dans if et else, tu vas comprendre.
    Pas d'aide par mp.

  10. #10
    Membre du Club
    Homme Profil pro
    autodidacte
    Inscrit en
    décembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : décembre 2018
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Aaah ok, le else modifiait selon la suite de la list Merci énormément

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

Discussions similaires

  1. [VBA-Excel] Effectuer une recherche dans une liste view
    Par Miles Raymond dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2006, 17h21
  2. Réponses: 5
    Dernier message: 03/10/2006, 10h41
  3. Réponses: 2
    Dernier message: 07/07/2006, 10h00
  4. Réponses: 2
    Dernier message: 10/10/2005, 02h25
  5. Recherche dans une liste non trié
    Par Oberown dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 13/09/2004, 13h56

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