我是这样做的:
inNumber = somenumber
inNumberint = int(inNumber)
if inNumber == inNumberint:
print "this number is an int"
else:
print "this number is a float"
Run Code Online (Sandbox Code Playgroud)
这样的事情.
有没有更好看的方法来做到这一点?
use*_*312 253
使用isinstance.
>>> x = 12
>>> isinstance(x, int)
True
>>> y = 12.0
>>> isinstance(y, float)
True
Run Code Online (Sandbox Code Playgroud)
所以:
>>> if isinstance(x, int):
print 'x is a int!'
x is a int!
Run Code Online (Sandbox Code Playgroud)
_编辑:_
正如所指出的,在长整数的情况下,上述情况不起作用.所以你需要这样做:
>>> x = 12L
>>> import numbers
>>> isinstance(x, numbers.Integral)
True
>>> isinstance(x, int)
False
Run Code Online (Sandbox Code Playgroud)
Dan*_*n H 80
我最喜欢@ninjagecko的回答.
这也有效:
对于Python 2.x
isinstance(n, (int, long, float))
Run Code Online (Sandbox Code Playgroud)
Python 3.x没有多久
isinstance(n, (int, float))
Run Code Online (Sandbox Code Playgroud)
对于复数,也有类型复合体
nin*_*cko 50
一内胆:
isinstance(yourNumber, numbers.Real)
Run Code Online (Sandbox Code Playgroud)
这避免了一些问题:
>>> isinstance(99**10,int)
False
Run Code Online (Sandbox Code Playgroud)
演示:
>>> import numbers
>>> someInt = 10
>>> someLongInt = 100000L
>>> someFloat = 0.5
>>> isinstance(someInt, numbers.Real)
True
>>> isinstance(someLongInt, numbers.Real)
True
>>> isinstance(someFloat, numbers.Real)
True
Run Code Online (Sandbox Code Playgroud)
S.L*_*ott 13
请求宽恕比要求许可更容易.只需执行操作即可.如果它起作用,则该物体是可接受的,合适的,合适的类型.如果操作不起作用,则该对象不是合适的类型.知道类型很少有帮助.
只需尝试操作,看看它是否有效.
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
Run Code Online (Sandbox Code Playgroud)
您还可以使用type()
示例:
if type(inNumber) == int : print "This number is an int"
elif type(inNumber) == float : print "This number is a float"
Run Code Online (Sandbox Code Playgroud)
小智 8
在 Python 3.6.3 Shell 中试过
>>> x = 12
>>> import numbers
>>> isinstance(x, numbers.Integral)
True
>>> isinstance(x,int)
True
Run Code Online (Sandbox Code Playgroud)
想不出有什么工作。
我不确定为什么以前没有提出过这一点,但是在名为 的浮点数上使用内置的 Python 方法怎么样is_integer()?基本上你可以给它一些转换为浮点数的数字,并询问它是否是整数。例如:
>>> (-13.0).is_integer()
True
>>> (3.14).is_integer()
False
Run Code Online (Sandbox Code Playgroud)
然而,为了完整起见,请考虑:
isinstance(i, int) or i.is_integer()
Run Code Online (Sandbox Code Playgroud)
这个解决方案怎么样?
if type(x) in (float, int):
# do whatever
else:
# do whatever
Run Code Online (Sandbox Code Playgroud)
请检查:导入号码
import math
a = 1.1 - 0.1
print a
print isinstance(a, numbers.Integral)
print math.floor( a )
if (math.floor( a ) == a):
print "It is an integer number"
else:
print False
Run Code Online (Sandbox Code Playgroud)
虽然 X 是浮点型,但值是整数,因此如果要检查值是整数,则不能使用 isinstance,而需要比较值而不是类型。
这是一段代码,用于检查数字是否为整数,适用于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
Run Code Online (Sandbox Code Playgroud)
注意,Python 2中具有两种类型的int和long,而Python 3具有唯一类型int.来源.
如果要检查您的号码是否float代表a int,请执行此操作
(isinstance(yourNumber, float) and (yourNumber).is_integer()) # True for 3.0
Run Code Online (Sandbox Code Playgroud)
如果您不需要区分int和float,并且两者都可以,那么ninjagecko的答案是要走的路
import numbers
isinstance(yourNumber, numbers.Real)
Run Code Online (Sandbox Code Playgroud)
您可以使用模来确定x是否为整数。该isinstance(x, int)方法仅通过类型确定x是否为整数:
def isInt(x):
if x%1 == 0:
print "X is an integer"
else:
print "X is not an integer"
Run Code Online (Sandbox Code Playgroud)
我知道这是一个旧线程,但这是我正在使用的东西,我认为可能会有所帮助。
它适用于python 2.7和python 3 <。
def is_float(num):
"""
Checks whether a number is float or integer
Args:
num(float or int): The number to check
Returns:
True if the number is float
"""
return not (float(num)).is_integer()
class TestIsFloat(unittest.TestCase):
def test_float(self):
self.assertTrue(is_float(2.2))
def test_int(self):
self.assertFalse(is_float(2))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
420585 次 |
| 最近记录: |