-6

I am new to Python (30 minutes). I want to know how to identify whether the number is an integer or a string, and proceed with the result using if else.

My code is:

number = input("enter the number \n")

integer = int(number)

if integer.is_integer():

    if integer > 0:
        print("positive ", integer)
    elif integer < 0:
        print("Negative ", integer)
    else:
        print("Number is", integer)
else:
    print("Enter integer value")
Bemmu
  • 17,849
  • 16
  • 76
  • 93
  • What exactly is the problem then? – Mureinik Feb 20 '17 at 07:12
  • All input will be a string. If it's not possible to cast that to an integer then `integer = int(number)` will fail anyway with `ValueError`. You can wrap it in a `try`/`except` block. – roganjosh Feb 20 '17 at 07:15
  • If `int` is able to parse the number `is_integer` will *always* return `True`... – Bakuriu Feb 20 '17 at 07:16
  • It shows an error, It my bad I just add a wrong syntax. – Sandeep Banerjee Feb 20 '17 at 07:28
  • However, This is working number = input("enter the number \n") if number.isdigit(): integer = int(number) if integer > 0: print("positive ", integer) elif integer < 0: print("Negative ", integer) else: print("Number is", integer) else: print("Enter integer value") – Sandeep Banerjee Feb 20 '17 at 07:28

2 Answers2

1
number = input("enter the number \n")

try:
    integer = int(number)

    if integer > 0:
        print "positive", integer
    elif integer < 0:
        print "Negative", integer
    else:
        print "Number is", integer

except ValueError:
    print("Enter integer value")
Bemmu
  • 17,849
  • 16
  • 76
  • 93
-2

Python provides doc-typing feature which means no matter if a value defined as a String or Number. So you must only check if the value conforms numerical properties or not using isnumeric(). This method returns true if all characters in the string are numeric, false otherwise.

str = u"hello100";  
print str.isnumeric() #returns false

str = u"123900";
print str.isnumeric() #returns true
Amir Keshavarz
  • 2,403
  • 3
  • 19
  • 19