Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #3136
| From | Benoit Izac <use.reply.to@INVALID.ADDRESS> |
|---|---|
| Newsgroups | fr.comp.lang.python |
| Subject | Re: Filtrer un nombre saisi |
| Date | 2019-02-11 19:36 +0100 |
| Message-ID | <87mun2tboa.fsf@izac.org> (permalink) |
| References | <slrnq639rl.vqc.lulu042@Minty.Rock-n-Roll.org> |
Bonjour,
Le 11/02/2019 à 17:48, Lulu a écrit dans le message
<slrnq639rl.vqc.lulu042@Minty.Rock-n-Roll.org> :
> #! /usr/bin/python3
> # -*- coding: utf-8 -*-
^^^^^^^^^^^^^^^^^^^^^^^
Ceci est par défaut avec Python 3, je ne sais pas si Geany l'utilise
mais c'est inutile pour python.
> print("\n Hellllllllo world !!!!!!\n")
>
> from math import *
from math import pi
> def surfCercle(r):
> "Surface d'un cercle de rayon r"
> return pi * r**2
>
> def filter_is_number(LaString):
> La_String_To_Return="0"
> for character in LaString:
> print(character," : ",end="")
> if character in [".","0","1","2","3","4","5","6","7","8","9"]:
> print("0K, in list",end="")
> La_String_To_Return=La_String_To_Return+character
> print(", La_String_To_Return =",La_String_To_Return)
> else:
> print("not in the list")
> return La_String_To_Return
On peut faire plus simple et plus lisible :
def filter_is_number(s):
return ''.join([c for c in s if c in '.0123456789'])
> [...]
>
> J'ai bien compris que la réponse à un input est forcément de type string
> et évidemment, la ligne 'rayon = float(input("Rayon du cercle ? "))'
> plante si l'utilisateur saisi des caractères alphabétiques dans le
> rayon.
>
> J'ai donc écrit la fonction filter_is_number pour filter les caractères
> de la chaîne saisie et ne laisser passer que le numérique...
>
> Avant d'écrire cette fonction, j'ai cherché en vain sur le web une
> fonction qui permette de "nettoyer" la saisie d'un utilisateur.
>
> Et je suis très étonné de n'avoir rien trouvé : mon besoin n'est tout de
> même pas très original...
>
> Sans parler du fait que ma fonction doit être une véritable horreur à
> vos yeux ;-)
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 « + ».
> Il doit bien exister une fonction "built in" qui m'aurait permis
> d'arriver à mes fins, non ?
Pas à ma connaissance, try/except comme te l'a suggéré Yves me semble la
façon la plus simple.
--
Benoit Izac
Back to fr.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
Filtrer un nombre saisi Lulu <lulu042@fry.fr.invalid> - 2019-02-11 17:48 +0100
Re: Filtrer un nombre saisi Lulu <lulu042@fry.fr.invalid> - 2019-02-11 18:33 +0100
Re: Filtrer un nombre saisi yves <yves@free.invalid> - 2019-02-11 17:46 +0000
Re: Filtrer un nombre saisi Lulu <lulu042@fry.fr.invalid> - 2019-02-11 23:27 +0100
Re: Filtrer un nombre saisi Lulu <lulu042@fry.fr.invalid> - 2019-02-11 23:40 +0100
Re: Filtrer un nombre saisi Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2019-02-12 07:34 +0100
Re: Filtrer un nombre saisi Lulu <lulu042@fry.fr.invalid> - 2019-02-12 10:00 +0100
Re: Filtrer un nombre saisi Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2019-02-11 19:36 +0100
Re: Filtrer un nombre saisi Lulu <lulu042@fry.fr.invalid> - 2019-02-11 23:26 +0100
Re: Filtrer un nombre saisi Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2019-02-12 07:24 +0100
Re: Filtrer un nombre saisi Lulu <lulu042@fry.fr.invalid> - 2019-02-12 10:17 +0100
Re: Filtrer un nombre saisi Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2019-02-12 18:54 +0100
Re: Filtrer un nombre saisi Nicolas <nicolasp@aaton.com> - 2019-02-12 08:30 +0100
csiph-web