Verifier si la valeur saisie est un nombre en Python
Résolu
Lenouveauapprenti
Messages postés
300
Date d'inscription
samedi 22 décembre 2018
Statut
Membre
Dernière intervention
7 avril 2024
-
Modifié le 1 févr. 2024 à 12:13
mamiemando Messages postés 33258 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 août 2024 - 6 févr. 2024 à 19:06
mamiemando Messages postés 33258 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 août 2024 - 6 févr. 2024 à 19:06
A voir également:
- Verifier si la valeur saisie est un nombre en Python
- Verifier un lien - Guide
- En raison d'un nombre important d'échec de connexion snapchat ✓ - Forum Snapchat
- La valeur saisie doit être numérique - Forum Bureautique
- Vérifier que le serveur freebox est bien connecté à internet - Forum Freebox
1 réponse
Diablo76
Messages postés
202
Date d'inscription
vendredi 25 novembre 2022
Statut
Membre
Dernière intervention
19 juillet 2024
43
Modifié le 1 févr. 2024 à 02:47
Modifié le 1 févr. 2024 à 02:47
Zone_Capital est ton objet Entry, il faut utiliser la méthode .get() qui elle retourne une chaine de charactères, il faut donc la convertir en int ou la comparer :
if isinstance(int(Zone_Capital.get()), int): ... # ou if Zone_Capital.get().isnumeric(): ...
Edit: Prends l'habitude d'utiliser print() quand tu as des erreurs ou des conditions qui ne fonctionnent pas, si tu avais fait :
print(Zone_Capital)
Tu aurais compris ton erreur.
Modifié le 1 févr. 2024 à 12:20
Pour compléter cette réponse déjà proposée, j'écrirais plutôt ce qui suit (en renommant Zone_Capital en zone_capital pour respecter les conventions de nommage en python) :
Bonne chance
2 févr. 2024 à 09:05
Bonjour
je sais que tu es partisan(e?) de "s'excuser plutôt que demander la permission", mais selon cet article de realpython.com LBYL vs EAFP: Preventing or Handling Errors in Python – Real Python
si la probabilité de l'erreur est grande, il est préférable de"regarder avant de sauter", et "s'excuser plutôt que demander la permission", si la probabilité est faible.
Évidement, il faut définir ce qui est grand et faible, mais je pense qu'un utilisateur qui tape n'importe quoi dans un champ texte ce n'est pas rare, du coup, il serait préférable de prendre la solution proposée par Diablo76
5 févr. 2024 à 17:08
Hello, je n'ai pas très bien compris le sens du commentaire, dans la mesure où dans ma réponse, je récupère la valeur et vérifie qu'il s'agit bien un flottant. La différence réside essentiellement dans la manière dont ce test est écrit (try ... except au lieu de isinstance/get).
6 févr. 2024 à 15:43
ben justement, faire un try except, ce n'est pas tester si la string contient quelque chose qui représente un float avant de caster (ce que fait le code de diablo).
Tu castes en partant du principe que la string est bien formatée et si ça pète tu gères l'erreur.
Selon RealPython, en considérant que le mauvais formatage n'est pas rare, il est préférable de faire comme Diablo.
On pourrait faire en sorte que cette erreur devienne rare par des artifices dans le front (masques de saisie, validation de données etc..), mais je pense que lenouveauapprenti n'en est pas encore là
6 févr. 2024 à 19:06
Si la chaîne de caractère ne contient pas quelque chose qui peut être vu comme un flottant (même un flottant mal formaté), alors l'exception sera levée. Donc je ne comprends toujours pas ce qui te chagrine. Si tu préfères : le cast dans le try ... except marche si et seulement si la chaîne contient un flottant bien formaté.