web-dev-qa-db-fra.com

Comment vérifier si une entrée brute est un entier dans Python 2.7?

Existe-t-il une méthode que je peux utiliser pour vérifier si un raw_input est un entier?

J'ai trouvé cette méthode après des recherches sur le web: 

print isinstance(raw_input("number: ")), int)

mais lorsque je l'exécute et que je saisis 4 par exemple, je reçois FALSE. Je suis un peu novice en python, toute aide serait la bienvenue. 

13

isinstance(raw_input("number: ")), int) produit toujours False car raw_input renvoie un objet chaîne en conséquence.

Utilisez try: int(...) ... except ValueError:

number = raw_input("number: ")
try:
    int(number)
except ValueError:
    print False
else:
    print True

ou utilisez str.isdigit :

print raw_input("number: ").isdigit()

NOTE Le second produit False pour -4 car il contient des caractères non digits. Utilisez le second si vous ne voulez que des chiffres.

UPDATE Comme l'a souligné J.F. Sebastian, str.isdigit dépend des paramètres régionaux (Windows). Il pourrait retourner True même int() lèverait ValueError pour l'entrée.

>>> import locale
>>> locale.getpreferredencoding()
'cp1252'
>>> '\xb2'.isdigit()  # SUPERSCRIPT TWO
False
>>> locale.setlocale(locale.LC_ALL, 'Danish')
'Danish_Denmark.1252'
>>> '\xb2'.isdigit()
True
>>> int('\xb2')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '\xb2'
19
falsetru

Vous pouvez le faire de cette façon:

try:
    val = int(raw_input("number: "))
except ValueError:
    # not an integer
8
Dietrich Epp

voici ma solution

`x =raw_input('Enter a number or a Word: ')
y = x.isdigit()
if (y == False):
    for i in range(len(x)):
        print('I'),
else:
    for i in range(int(x)):
        print('I'),

`

1
user5322265
def checker():
  inputt = raw_input("how many u want to check?")
  try:
      return int(inputt)
  except ValueError:
      print "Error!, pls enter int!"
      return checker()
0
Frank Musteman

Essayez cette méthode .isdigit (), voir exemple ci-dessous.

user_input = raw_input()
if user_input.isdigit():
    print "That is a number."

else:
    print "That is not a number."

Si vous souhaitez que l'entrée reste numérique pour une utilisation ultérieure, vous pouvez ajouter quelque chose comme:

new_variable = int(user_input)
0
Elf Machine