[python] 숫자가 int인지 float인지 확인하십시오.

내가 한 방법은 다음과 같습니다.

inNumber = somenumber
inNumberint = int(inNumber)
if inNumber == inNumberint:
    print "this number is an int"
else:
    print "this number is a float"

그런 것.
더 좋은 방법이 있습니까?



답변

isinstance를 사용하십시오 .

>>> x = 12
>>> isinstance(x, int)
True
>>> y = 12.0
>>> isinstance(y, float)
True

그래서:

>>> if isinstance(x, int):
        print 'x is a int!'

x is a int!

_편집하다:_

지적한 바와 같이, 긴 정수의 경우 위의 작동하지 않습니다. 따라서 다음을 수행해야합니다.

>>> x = 12L
>>> import numbers
>>> isinstance(x, numbers.Integral)
True
>>> isinstance(x, int)
False


답변

@ninjagecko의 답변이 가장 좋습니다.

이것은 또한 작동합니다 :

Python 2.x 용

isinstance(n, (int, long, float)) 

파이썬 3.x는 오래 가지 않습니다

isinstance(n, (int, float))

복소수에 대한 복소수 유형도 있습니다


답변

짧막 한 농담:

isinstance(yourNumber, numbers.Real)

이것은 몇 가지 문제를 피합니다.

>>> isinstance(99**10,int)
False

데모:

>>> import numbers

>>> someInt = 10
>>> someLongInt = 100000L
>>> someFloat = 0.5

>>> isinstance(someInt, numbers.Real)
True
>>> isinstance(someLongInt, numbers.Real)
True
>>> isinstance(someFloat, numbers.Real)
True


답변

허락을 구하는 것보다 용서를 구하는 것이 더 쉽습니다. 간단히 작업을 수행하십시오. 그것이 작동한다면, 물체는 수용 가능하고 적합하며 적절한 유형이었습니다. 작업이 작동하지 않으면 개체 유형이 적합하지 않은 것입니다. 유형을 아는 것은 거의 도움이되지 않습니다.

작업을 시도하고 작동하는지 확인하십시오.

inNumber = somenumber
try:
    inNumberint = int(inNumber)
    print "this number is an int"
except ValueError:
    pass
try:
    inNumberfloat = float(inNumber)
    print "this number is a float"
except ValueError:
    pass


답변

당신이 할 수있는 일은 type()
예제를 사용하는 것입니다 .

if type(inNumber) == int : print "This number is an int"
elif type(inNumber) == float : print "This number is a float"


답변

다음은 숫자가 정수인지 여부를 확인하는 코드이며 Python 2와 Python 3 모두에서 작동합니다.

import sys

if sys.version < '3':
    integer_types = (int, long,)
else:
    integer_types = (int,)

isinstance(yourNumber, integer_types)  # returns True if it's an integer
isinstance(yourNumber, float)  # returns True if it's a float

공지 사항 파이썬 2는 두 가지 유형을 가지고 intlong파이썬 3 만 입력 반면, int. 소스 .

숫자 float가을 나타내는 숫자인지 확인하려면 다음을 int수행하십시오.

(isinstance(yourNumber, float) and (yourNumber).is_integer())  # True for 3.0

int와 float을 구분할 필요가없고 어느 쪽이든 괜찮다면 ninjagecko의 대답은 갈 길입니다.

import numbers

isinstance(yourNumber, numbers.Real)


답변

이 솔루션은 어떻습니까?

if type(x) in (float, int):
    # do whatever
else:
    # do whatever