如何检查变量是否为整数?


当前回答

#######################################
# Value_Is_Int
#######################################
def value_is_int(value):
    try:
        tempVal = int(value)
        return True
    except:
        return False

调用这个函数:

if value_is_int(value):
    print "Integer"
else:
    print "Not integer"

其他回答

到目前为止,所有提出的答案似乎都忽略了一个事实,即双精度浮点数(python中的浮点数实际上是双精度浮点数)也可以是整数(如果小数点后没有任何数字)。我使用内置的is_integer()方法对double进行检查。

示例(在for循环中每x次执行一次操作):

for index in range(y): 
    # do something
    if (index/x.).is_integer():
        # do something special

编辑:

在调用此方法之前,始终可以将其转换为浮点数。有三种可能性:

>>> float(5).is_integer()
True
>>> float(5.1).is_integer()
False
>>> float(5.0).is_integer()
True

否则,你可以先检查它是否像Agostino说的那样是int型:

def is_int(val):
    if type(val) == int:
        return True
    else:
        if val.is_integer():
            return True
        else:
            return False

下面是这里提到的不同方法的总结:

Int (x) == x 尝试x = operator.index(x) isinstance (x, int) isinstance (x, numbers.Integral)

下面是它们如何应用于各种具有整数值的数值类型:

你可以看到它们不是100%一致的。Fraction和Rational在概念上是相同的,但是一个提供了.index()方法,而另一个没有。复杂类型不喜欢转换为int,即使实部是整数,虚部是0。

(np.int8|16|32|64(5)表示np.int8(5), np.int32(5)等行为相同)

与其把事情过分复杂化,不如干脆简单一点

if type(var) is int:

从来没有。检查。类型。

这样做。总是这样。

try:
    some operation that "requires" an integer
except TypeError, e:
    it wasn't an integer, fail.

最简单的方法是:

if n==int(n):
    --do something--    

变量n在哪