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


当前回答

最简单的方法是:

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

变量n在哪

其他回答

到目前为止,所有提出的答案似乎都忽略了一个事实,即双精度浮点数(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

在这里找到了一个关于SO本身的相关问题。

Python开发人员倾向于不检查类型,而是执行特定于类型的操作并捕获TypeError异常。但如果你不知道类型,那么你有以下。

>>> i = 12345
>>> type(i)
<type 'int'>
>>> type(i) is int
True

这里有一个简单的例子,你可以确定一个整数

def is_int(x):
    print round(x),
    if x == round(x):
        print 'True',
    else:
        print 'False'

is_int(7.0)   # True
is_int(7.5)   # False
is_int(-1)    # True    

我以前遇到过这个问题,如果你的类型在if语句中使用它,让我们只是说你想让它返回true,你会把它输入到一行,(在所有的底线是真的需要看):

In [1]: test = 1

In [2]: test2 = 1.0

In [3]: type(test) == int
Out[3]: True

In [4]: type(test2) == int
Out[4]: False

In [5]: if type(x) == int is True:

你可以做同样的事情来检查它是否是一个浮点数,它是真还是假,并用来分配一个名称,(比如x,如果你知道我的意思的话)。

考虑x = n**(1.0/m)的情况,其中n=10**5, m=5。 在Python中,x将为10.000000000000002,由于浮点算术运算,它不是整数。

所以我要检查一下

if str(float(x)).endswith('.0'): print "It's an integer."

我用下面的代码进行了测试:

for a in range(2,100):
    for b in range(2,100):
        x = (a**b)**(1.0/b)
        print a,b, x, str(float(x)).endswith('.0')

它对所有a和b输出True。