Erreur fonction filtrage mot
Résolu/Fermé
raptor
-
21 mai 2022 à 22:21
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 - 22 mai 2022 à 11:28
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 - 22 mai 2022 à 11:28
A voir également:
- Suite à 5 erreurs sur votre mot de passe, votre compte est bloqué
- Voir mot de passe wifi android - Guide
- Mot de passe administrateur - Guide
- Trousseau mot de passe iphone - Guide
- Identifiant et mot de passe - Guide
- Compte gmail bloqué - Guide
5 réponses
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
Ambassadeur
1 554
22 mai 2022 à 11:28
22 mai 2022 à 11:28
L'erreur me semble normale. Pour comprendre, ajoute des print() dans ton code.
Pour ce que tu ne comprends pas: ajoute dans ta liste de mots un mot qui contient a et e, et tu auras aussi l'erreur.
Pour ce que tu ne comprends pas: ajoute dans ta liste de mots un mot qui contient a et e, et tu auras aussi l'erreur.
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
21 mai 2022 à 23:26
21 mai 2022 à 23:26
Bonjour,
Déjà ..
En python, l'indentation étant primordiale ... merci de re poster ton code en utilisant les balises de code.
Explications disponibles ici : https://forums.commentcamarche.net/forum/affich-37598670-mise-en-forme-du-forum-et-des-fiches-pratiques-ccm#les-codes-sources
Ensuite, pourquoi utilises tu la variable lst ?
Ne peux tu pas directement faire le remove sur la variable words ?
Déjà ..
En python, l'indentation étant primordiale ... merci de re poster ton code en utilisant les balises de code.
Explications disponibles ici : https://forums.commentcamarche.net/forum/affich-37598670-mise-en-forme-du-forum-et-des-fiches-pratiques-ccm#les-codes-sources
Ensuite, pourquoi utilises tu la variable lst ?
Ne peux tu pas directement faire le remove sur la variable words ?
def filter_words(words, letters): for elem in letters: for mot in words: if elem not in mot: words.remove(mot) return words
le code me retourne ['a'] au lieu de ['the', 'a', 'bone']
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
22 mai 2022 à 00:11
22 mai 2022 à 00:11
C'est normal.
Il a retiré tous les mots qui ne contiennent pas la lettre a et tous les mots qui ne contiennent pas de e..
Une solution rapide que je vois serait d inverser tes deux boucles.
Pour chaque mot puis à l'intérieur pour chaque lettre
Dans ton if , tu mets une variable à true si la lettre n'est pas présente dans le mot.
À la fin de la boucle sur les lettres, tu regardes si la variable est toujoirs a true.
Si oui tu supprimes e mot.
Puis tu remets cette variable à false avant de passer au mois suivant..
Il a retiré tous les mots qui ne contiennent pas la lettre a et tous les mots qui ne contiennent pas de e..
Une solution rapide que je vois serait d inverser tes deux boucles.
Pour chaque mot puis à l'intérieur pour chaque lettre
Dans ton if , tu mets une variable à true si la lettre n'est pas présente dans le mot.
À la fin de la boucle sur les lettres, tu regardes si la variable est toujoirs a true.
Si oui tu supprimes e mot.
Puis tu remets cette variable à false avant de passer au mois suivant..
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
22 mai 2022 à 00:13
22 mai 2022 à 00:13
Sinon tu peux regarder comment faire une intersection entre deux listes
https://www.geeksforgeeks.org/python-intersection-two-lists/
https://www.geeksforgeeks.org/python-intersection-two-lists/
yg_be
Messages postés
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
1 554
Modifié le 22 mai 2022 à 09:52
Modifié le 22 mai 2022 à 09:52
bonjour,
Il n'a pas retiré tous les mots qui ne contiennent pas e, sinon il n'aurait pas gardé le mot "a".
Ce n'est pas une bonne idée de faire une itération sur une liste tout en supprimant des éléments de cette liste.
Il est préférable, soit de faire une itération sur une copie de la liste:
Il n'a pas retiré tous les mots qui ne contiennent pas e, sinon il n'aurait pas gardé le mot "a".
Ce n'est pas une bonne idée de faire une itération sur une liste tout en supprimant des éléments de cette liste.
Il est préférable, soit de faire une itération sur une copie de la liste:
import copy #... for mot in copy.copy(words): #..., soit de travailler avec un index, et de commencer par la fin, à condition d'utiliser l'index pour la suppression:
for x in range(len(words)-1,-1,-1): mot=words[x] #... del words[x]
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
C'est pour éviter ce problème d’itération sur une liste tout en supprimant des éléments de la liste que dans ma première fonction j'avais créer une deuxième liste sur laquelle je supprimais mes éléments.
Mais j'obtiens une erreur line 13, in filter_words
lst.remove(mot)
ValueError: list.remove(x): x not in list
Ce que je ne comprends pas c'est ce qui je supprime le 'not' de 'il elem not in mot' ma fonction se lance et j'obtiens ['dog', 'got']
C'est pour éviter ce problème d’itération sur une liste tout en supprimant des éléments de la liste que dans ma première fonction j'avais créer une deuxième liste sur laquelle je supprimais mes éléments.
def filter_words(words, letters): lst = [i for i in words] for elem in letters: for mot in words: if elem not in mot: lst.remove(mot) return lst
Mais j'obtiens une erreur line 13, in filter_words
lst.remove(mot)
ValueError: list.remove(x): x not in list
Ce que je ne comprends pas c'est ce qui je supprime le 'not' de 'il elem not in mot' ma fonction se lance et j'obtiens ['dog', 'got']