如何检查一个变量是否为整数?
operator.index
(__index__
特殊方法)是一个好选择。因为它应该适用于所有可以安全转换为整数的类型。例如,浮点数会失败,整数、甚至不实现Integral抽象类的花哨整数类都可以通过鸭子类型工作。
operator.index
是用于列表索引等的方法。在我看来,它应该被更多地使用/推广。__index__
的引入的原因!int(operator.index(x))
以确保获得真正的整数。 - greggo#!/usr/bin/env python
import re
def is_int(x):
if(isinstance(x,(int,long))):
return True
matchObj = re.match(r'^-?\d+\.(\d+)',str(x))
if matchObj:
x = matchObj.group(1)
if int(x)-0==0:
return True
return False
print is_int(6)
print is_int(1.0)
print is_int(1.1)
print is_int(0.1)
print is_int(-956.0)
我正在编写一个程序来检查一个数字是否为完全平方数,但是我遇到了这个问题,我使用的代码如下:
import math
print ("this program will tell you if a number is square")
print ("enter an integer")
num = float(input())
if num > 0:
print ("ok!")
num = (math.sqrt(num))
inter = int(num)
if num == inter:
print ("It's a square number, and its root is")
print (num)
else:
print ("It's not a square number, but its root is")
print (num)
else:
print ("That's not a positive number!")
12345678901234567890123456789012
(这不是一个完全平方数)来测试一下,看看它是否给出了正确的答案。你应该实现一个整数平方根算法。 - Craig McQueenvar = 15.4
if(var - int(var) != 0):
print "Value is not integer"
要测试一个值是否为整数(任何类型),你可以这样做:
# Python 2 and 3:
import sys
if sys.version_info < (3,):
integer_types = (int, long,)
else:
integer_types = (int,)
>>> isinstance(1, integer_types)
True
# Python 2 only:
if isinstance(x, (int, long)):
...
# Python 3 only:
if isinstance(x, int):
...
来源: http://python3porting.com/differences.html
Python 2 和 Python 3 在语法和库方面有很多不同之处。以下是一些主要的区别:
def isInt(anyNumberOrString):
try:
int(anyNumberOrString) #to check float and int use "float(anyNumberOrString)"
return True
except ValueError :
return False
isInt("A") #False
isInt("5") #True
isInt(8) #True
isInt("5.88") #False *see comment above on how to make this True
if type(x) is int:
val=3
>>> isinstance(val,int )
True
将会工作。
最简单的方法是:
if n==int(n):
--do something--
n是变量
n
不是 int
类型,这只会抛出一个未处理的异常。它也没有回答问题。 - Git.Coach
type
是解决这个问题的正确方式,但这(几乎肯定)不是正确的方式。 - Katriel