Filter les valeurs d'un input()
Bonjour,
Je souhaite remplir la liste
Merci
Je souhaite remplir la liste
Cotespuis filtrer cette liste avec la fonction ci_dessous.
Merci
def ifilter(predicate, iterable): if predicate is None: predicate = bool for x in iterable: if predicate(x): yield x cotes = input("Veuillez saisir les cote: ").split() Cotes = [] for x in cotes: try: float(x) except ValueError: Cotes.append(x) print(Cotes) d = ifilter(lambda x: x < 20, Cotes) print(d)
A voir également:
- Filter les valeurs d'un input()
- Input signal not found ✓ - Forum Matériel & Système
- Input not supported - Forum Ecran
- No video input - Forum Windows
- [ NO VIDEO INPUT ENTER SLEEP MODE] - Forum PC portable
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? ✓ - Forum Excel
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
le code ne fonctionne pas?
le code ne fonctionne pas?
Bonjour,
Comme Phil le souligne, mettre des
Pour information, la fonction
Bonne chance
Comme Phil le souligne, mettre des
- Ta variable
cotes
contient une liste de chaînes de caractère (e.g.['5', '20', '10', '30', '40']
si on saisit5 20 10 30 40
. - Ta boucle
for
itère sur ces valeurs, calcule la conversion flottante (qui dans mon exemple marche pour chaque élément) mais n'en fait rien. J'imagine que tu souhaites dans ces conditions les ajouter à la fin deCotes
? Étonnamment, si la valeur n'est pas transformables enfloat
, alors tu vas l'ajouter à la fin deCotes
. Donc si par exemple tu saisisabc def
,Cotes
sera égal à["abc", "def"]
. Il va sans dire que l'appel au prédicat par défaut (bool()
) n'a aucune chance de marcher, puisque ces valeurs ne correspondent en rien à des booléens. - Et ceci m'amène au point suivant : le prédicat par défaut me semble bancale. En gros il vérifie si la valeur passée en paramètre se transforme naturellement en
bool
. Alors certes, appelerbool()
ne plantera pas car tu reçois des valeurs numériques, mais cette fonction renverraFalse
si0
figure parmi tes côtes. Un prédicat plus naturel serait celui qui renvoie systématiquementTrue
(et donc, qui fait queifilter
ne filtre rien), ce que tu peux écrire avec unelambda
.
predicate = (lambda x: True)
Pour information, la fonction
filterde python fait plus ou moins ce que tu tentes de coder dans
ifilter, j'imagine que c'est le but de l'exercice ?
Bonne chance