检查变量是否为整数

1136

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


3
你好,@Hulk的话似乎让你认为type是解决这个问题的正确方式,但这(几乎肯定)不是正确的方式。 - Katriel
2
@ Hulk:没有冒犯之意。但需要明确的是,我所知道的唯一捕获异常的方法是使用 except 子句。我建议你捕获 TypeError 异常。 - Jungle Hunter
17
这个问题存在歧义,因此答案也被分成了不同的部分。一些人回答如何检查变量的类型(例如,5→True,5.0→False),而另一些人回答如何检查值是否为整数(例如,5→True,5.0→True,Fraction(5,1)→True,5.4→False)。也许应该相应地将问题和答案拆分开来? - endolith
1
最简单的方法(适用于Python 2.7.11)是int(var)== var。适用于.0浮点数,返回布尔值。 - oisinvg
2
你是指“如何确定变量的类型是整数?”还是“如何确定变量的值是整数?” - Benice
显示剩余7条评论
41个回答

1
我可以检查数字是否为整数,包括像7.0这样的数字。
def is_int(x):
    if x - round(x) == 0 :
        return True
    else:
        return False

1
#######################################
# 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"

1

你可以通过以下方式完成:

name = 'Bob'
if type(name) == str:
    print 'this works'
else:
    print 'this does not work'

如果你将变量name赋值为'this works',它将返回'this works'...但是如果你将name赋值为int(1),它将返回'this does not work',因为现在它是一个字符串... 你也可以尝试:

name = int(5)
if type(name) == int:
    print 'this works'
else:
    print 'this does not work'

并且同样的事情会发生。


1
有另一种方法可以进行类型检查。
例如:
  n = 14
  if type(n)==int:
  return "this is an int"

1
考虑 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。

似乎很危险。str(float)的行为在过去发生了变化,这可能会影响它。无论如何,这个数字不等于10,只是足够接近让'str'调用它。如果您可以接受四舍五入的模糊度,请检查abs(x-round(x))。 - greggo

1
if type(input('enter = '))==int:
     print 'Entered number is an Integer'
else:
     print 'Entered number isn't an Integer'

这将用于检查数字是否为整数。

0

测试,判断对象是否为字符串(适用于Python 2.*和Python 3.*)

text = get_text()

try:
    text = text+""
except:
    return "Not a string"

do_something(text)

-2
import numpy as np

if (np.floor(x)-x == 0):
  return "this is an int"

-2

您可以使用此函数:

def is_int(x):    
    if type(x) == int:
       return True
    return False

测试:

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

不要使用type(),请使用isinstance(),参见上面的答案 https://dev59.com/l3A75IYBdhLWcg3wDUco#3501408 - goetz

-5
我以前遇到过这个问题,如果你想在一个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:

你可以用同样的方法来检查它是否为 float,是否为 truefalse,并使用来分配一个名称(比如如果你知道我的意思,可以使用 x)。


3
你的回答对现有的回答有什么补充?"if type(x) == int is True"是非常错误的,即它将始终评估为“False”。 - vaultah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接