How do I check if raw input is integer in python 2.7?

Is there a method that I can use to check if a raw_input is an integer?

I found this method after researching in the web:

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

but when I run it and input 4 for example, I get FALSE.
I’m kind of new to python, any help would be appreciated.

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

isinstance(raw_input("number: ")), int) always yields False because raw_input return string object as a result.

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

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

or use str.isdigit:

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

NOTE The second one yields False for -4 because it contains non-digits character. Use the second one if you want digits only.

UPDATE As J.F. Sebastian pointed out, str.isdigit is locale-dependent (Windows). It might return True even int() would raise ValueError for the input.

>>> 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'

Method 2

You can do it this way:

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

Method 3

here is my 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'),

`

Method 4

Try this method .isdigit(), see example below.

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

else:
    print "That is not a number."

If you require the input to remain digit for further use, you can add something like:

new_variable = int(user_input)

Method 5

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


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x