Path: csiph.com!news.redatomik.org!news.izac.org!reader From: Benoit Izac Newsgroups: fr.comp.lang.python Subject: Re: Filtrer un nombre saisi Date: Tue, 12 Feb 2019 07:24:28 +0100 Message-ID: <87ef8dttgj.fsf@izac.org> References: <87mun2tboa.fsf@izac.org> Reply-To: benoit.izac@free.fr Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Injection-Info: keg.izac.org; logging-data="19969"; mail-complaints-to="usenet@izac.org" Xref: csiph.com fr.comp.lang.python:3143 Bonjour, Le 11/02/2019 à 23:26, Lulu a écrit dans le message  : >> def filter_is_number(s): >> return ''.join([c for c in s if c in '.0123456789']) > > Plus lisible ? > J'ai googlé la méthode 'join', mais ta ligne reste obscure. > Peux-tu expliquer comment ça marche ? Il faut regarder la fonction join dans la classe str (« '' » est de type str). pydoc str.join Pour la compréhension de liste, continue ton apprentissage, tu vas forcément la rencontrer tellement c'est incontournable en Python. > [...] >> >> Le truc c'est que ta fonction retire tout ce qui n'est pas un chiffre ou >> un ".". Déjà c'est pas terrible car si on rentre "1e2", on ne cherche >> pas à avoir 12 mais 100. Ensuite, si tu rentres "1..2", ça va planter >> derrière. Enfin, un float peut être négatif ou commencer par un « + ». > > Effectivement, je n'avais pas pensé au '1e2'. > J'ai corrigé le cas de la multiple occurrence du '.' Tu ne couvriras jamais tous les cas, encore un exemple : >>> float("NaN") nan -- Benoit Izac