168 votes

Comment vérifier si l'entrée de chaîne est un nombre ?

Comment puis-je vérifier si l'entrée de chaîne d'un utilisateur est un nombre (par exemple -1 0 1, etc.) ?

user_input = input("Enter something:")

if type(user_input) == int:
    print("Is a number")
else:
    print("Not a number")

Ce qui précède ne fonctionnera pas car input renvoie toujours une chaîne.

290voto

Daniel DiPaolo Points 24085

Il suffit d'essayer de le convertir en int, puis de se sauver si cela ne fonctionne pas.

try:
    val = int(userInput)
except ValueError:
    print("That's not an int!")

Voir Gestion des exceptions dans le tutoriel officiel.

102voto

jmichalicek Points 1034

Apparemment, cela ne fonctionnera pas pour les valeurs négatives, mais cela fonctionnera pour les nombres positifs.

Utiliser isdigit()

if userinput.isdigit():
    #do stuff

53voto

Andrés Fernández Points 2995

La méthode isnumeric() fera le travail (Documentation pour python3.x) :

>>>a = '123'
>>>a.isnumeric()
True

Mais rappelez-vous :

>>>a = '-1'
>>>a.isnumeric()
False

isnumeric() renvoie Vrai si tous les caractères de la chaîne sont des caractères numériques et qu'il y a au moins un caractère.

Les nombres négatifs ne sont donc pas acceptés.

:):):)

25voto

RazorX Points 61

Pour Python 3, ce qui suit fonctionnera.

userInput = 0
while True:
  try:
     userInput = int(input("Enter something: "))       
  except ValueError:
     print("Not an integer!")
     continue
  else:
     print("Yes an integer!")
     break 

12voto

karthik27 Points 116

MODIFIÉ : Vous pouvez également utiliser ce code ci-dessous pour savoir si c'est un nombre ou aussi un

import re
num_format = re.compile("^[\-]?[1-9][0-9]*\.?[0-9]+$")
isnumber = re.match(num_format,givennumber)
if isnumber:
    print "given string is number"

négatif

vous pouvez également modifier votre format en fonction de vos besoins spécifiques. Je vois ce post un peu trop tard.mais j'espère que cela aidera d'autres personnes qui cherchent des réponses :) . laissez-moi savoir si quelque chose ne va pas dans le code donné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X