Liste verification
Résolu/Fermé
A voir également:
- Liste verification
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste site streaming illégal - Accueil - Services en ligne
- Liste code ascii - Guide
- Site dangereux liste - Guide
12 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 845
5 janv. 2015 à 21:28
5 janv. 2015 à 21:28
Bonjour,
Je remets ce que j'avais mis plus haut car, ça me paraît clair :-)
Dès qu'un élément n'est pas dans la liste, il faut renvoyer False. S'ils sont tous dans la liste, donc à la fin de la boucle for, tu renvoies True.
Je remets ce que j'avais mis plus haut car, ça me paraît clair :-)
Dès qu'un élément n'est pas dans la liste, il faut renvoyer False. S'ils sont tous dans la liste, donc à la fin de la boucle for, tu renvoies True.
Utilisateur anonyme
4 janv. 2015 à 17:03
4 janv. 2015 à 17:03
Bonsoir,
Une boucle parcoure les données de list2.
Pour chaque valeur (V) de list2, une seconde boucle parcoure List1 pour comparer à V.
A la première absence, tu sors des deux boucles et retourne False.
Si tu trouve tout, tu retournes True
Une boucle parcoure les données de list2.
Pour chaque valeur (V) de list2, une seconde boucle parcoure List1 pour comparer à V.
A la première absence, tu sors des deux boucles et retourne False.
Si tu trouve tout, tu retournes True
oui c'est ce que j'ai pensé faire mais impossible d'écrire quelque chose qui fonctionne, mon programme vérifie uniquement la première donnée de lst2
Utilisateur anonyme
4 janv. 2015 à 19:49
4 janv. 2015 à 19:49
Pour que quelqu'un puisse voir ce qui ne va pas dans ton code, il faut le poster.
Pense à utiliser la coloration syntaxique.
Pense à utiliser la coloration syntaxique.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 845
4 janv. 2015 à 20:05
4 janv. 2015 à 20:05
Pas besoin d'une double boucle for.
1/ Tu parcours la liste2
2/ Tu renvoies False dès qu'un élément n'est pas dans liste1 (opérateur in).
3/ Sinon, tu renvoie True
1/ Tu parcours la liste2
2/ Tu renvoies False dès qu'un élément n'est pas dans liste1 (opérateur in).
3/ Sinon, tu renvoie True
ça ferais un truc du genre ?
for i in lst1 :
if i in lst2 :
return True
else :
return False
for i in lst1 :
if i in lst2 :
return True
else :
return False
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 845
4 janv. 2015 à 22:27
4 janv. 2015 à 22:27
Ca brûle, mais c'est pas tout à fait juste.
Dès qu'un élément n'est pas dans la liste, c'est qu'il faut renvoyer False. S'ils sont tous dans la liste, donc à la fin de la boucle for, tu renvoies True.
C'est plutôt for i in lst2 (et non lst1)
Note : n'oublie pas de tenir compte de la remarque de whismeril sur la coloration syntaxique.
Exemple :
<code python>ici tu mets ton code</code>
Dès qu'un élément n'est pas dans la liste, c'est qu'il faut renvoyer False. S'ils sont tous dans la liste, donc à la fin de la boucle for, tu renvoies True.
C'est plutôt for i in lst2 (et non lst1)
Note : n'oublie pas de tenir compte de la remarque de whismeril sur la coloration syntaxique.
Exemple :
<code python>ici tu mets ton code</code>
def apartenance (lst1 , lst2) : for c in lst2 : if c not in lst1 : return False else : return True lst = [1,2,3,4,5,6,7] lsttest = [1,4,9] test = apartenance (lsttest,lst) print (test)
je viens d'écrire ça mais le problème est qu'il me renvoi True, j'ai l'impression qu'il test uniquement le première éléments
Utilisateur anonyme
5 janv. 2015 à 11:29
5 janv. 2015 à 11:29
Bonjour,
Je ne connaissait pas l'instruction in (je ne fais pas de Python...).
Mais dans ma première réponse, je t'ai dis de renvoyer Fasle dès qu'il manque une valeur et True quand toute la recherche est faite.
Ce n'est pas ce que fait ton code.
Je ne connaissait pas l'instruction in (je ne fais pas de Python...).
Mais dans ma première réponse, je t'ai dis de renvoyer Fasle dès qu'il manque une valeur et True quand toute la recherche est faite.
Ce n'est pas ce que fait ton code.
bonjours,
je vois pas très bien ce que tu veux dire, la il est censé renvoyer False lorsque que un élement ne se trouve pas dans la seconde liste
je vois pas très bien ce que tu veux dire, la il est censé renvoyer False lorsque que un élement ne se trouve pas dans la seconde liste
comme ça, j'ai vraiment du mal avec cette fonction dsl :s
def apartenance (lst1 , lst2) : for c in lst2 : if c not in lst1 : return False return True lst = [1,2,3,4,5,6,7] lsttest = [1,4,6] test = apartenance (lsttest,lst) print (test)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 845
Modifié par fiddy le 5/01/2015 à 22:03
Modifié par fiddy le 5/01/2015 à 22:03
Bah c'est bien ça :-). Parfait.
Ca ne te convient pas ?
Ca ne te convient pas ?
maxixime
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
5 janv. 2015 à 22:14
5 janv. 2015 à 22:14
bah je l'avais fait comme ça au départ, mais quand je le test il me répond False .. :/
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 845
5 janv. 2015 à 22:28
5 janv. 2015 à 22:28
Ben, faut faire attention.
Dans ton post initial, tu mets :
lst1 = [1,2,3,4,5,6,7,8,9]
lst2 = [1,5,8]
pour que si les élements de lst2 sont dans lst1 il me return True
Dans ce cas, il faut bien faire : for i in lst2
Maintenant, si tu souhaites vérifier les éléments de lst1. Là oui, il faut bien mettre : for i in lst1.
Cdlt,
Dans ton post initial, tu mets :
lst1 = [1,2,3,4,5,6,7,8,9]
lst2 = [1,5,8]
pour que si les élements de lst2 sont dans lst1 il me return True
Dans ce cas, il faut bien faire : for i in lst2
Maintenant, si tu souhaites vérifier les éléments de lst1. Là oui, il faut bien mettre : for i in lst1.
Cdlt,
cependant il me reste un problème, je suis en train de programmer le jeu des chiffres et des lettres mais dans cette vérification il regarde juste si l'élément existe dedans alors que je voudrais que l'utilisateur ne puisse se servir que d'une seul fois chaque élément de lst1 (choix lettres) dans lst2(choix du joueur)
par exemple:
lst1=[1,2,3,4,5,6]
lst2=[1,2,4,4]
j'aimerai qu'il me donne False
par exemple:
lst1=[1,2,3,4,5,6]
lst2=[1,2,4,4]
j'aimerai qu'il me donne False
Utilisateur anonyme
Modifié par fred1599 le 7/01/2015 à 14:08
Modifié par fred1599 le 7/01/2015 à 14:08
Pour vérifier l'appartenance d'un groupe d'éléments dans une liste on peut utiliser all. C'est très efficace et court.
"alors que je voudrais que l'utilisateur ne puisse se servir que d'une seul fois chaque élément de lst1 (choix lettres) dans lst2(choix du joueur)"
Ce n'est pas le rôle de la fonction appartenance, il faut aussi réfléchir à la façon de concevoir la résolution d'un problème. Dans ton cas, il faut créer une fonction permettant d'enregistrer les valeurs dans une liste en vérifiant qu'elle n'était déjà pas présente auparavant.
Ça pourrait être une fonction toute simple qui permettrait d'insérer une valeur dans une liste à condition que cette valeur ne soit pas déjà présente. Si elle est présente, la fonction retourne False, sinon True...
Ensuite utiliser cette fonction lors de la demande utilisateur afin d'entrer ses chiffres et ses lettres.
def appartenance(lst1, lst2): return all(i in lst1 for i in lst2)
"alors que je voudrais que l'utilisateur ne puisse se servir que d'une seul fois chaque élément de lst1 (choix lettres) dans lst2(choix du joueur)"
Ce n'est pas le rôle de la fonction appartenance, il faut aussi réfléchir à la façon de concevoir la résolution d'un problème. Dans ton cas, il faut créer une fonction permettant d'enregistrer les valeurs dans une liste en vérifiant qu'elle n'était déjà pas présente auparavant.
Ça pourrait être une fonction toute simple qui permettrait d'insérer une valeur dans une liste à condition que cette valeur ne soit pas déjà présente. Si elle est présente, la fonction retourne False, sinon True...
def insert(valeur, liste): if valeur not in liste: liste.append(valeur) return True return False
Ensuite utiliser cette fonction lors de la demande utilisateur afin d'entrer ses chiffres et ses lettres.