如何检查变量是否为整数?
当前回答
下面是这里提到的不同方法的总结:
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)等行为相同)
其他回答
一个简单的方法是直接检查除以1的余数是否为0。
if this_variable % 1 == 0:
list.append(this_variable)
else:
print 'Not an Integer!'
如果你只需要值,操作符。Index (__index__特殊方法)是我认为的方法。因为它应该适用于所有可以安全转换为整数的类型。例如,浮点数失败,整数,甚至没有实现Integral抽象类的花哨整数类都可以通过duck typing工作。
操作符。索引用于列表索引等。在我看来,它应该被更多地使用/推广。
事实上,我认为这是唯一正确的方法来获得整数值,如果你想确定浮点数,由于截断问题等被拒绝,它适用于所有整型(即numpy等),即使他们可能(还)不支持抽象类。
这就是引入__index__的目的!
如果变量像字符串一样输入(例如。“2010”):
if variable and variable.isdigit():
return variable #or whatever you want to do with it.
else:
return "Error" #or whatever you want to do with it.
在使用这个之前,我用try/except和检查(int(变量))解决了它,但它是较长的代码。我想知道在资源的使用和速度上是否有什么不同。
我以前遇到过这个问题,如果你的类型在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,如果你知道我的意思的话)。
如果你没有int,你可以这样做:
var = 15.4
if(var - int(var) != 0):
print "Value is not integer"
推荐文章
- Python glob多个文件类型
- 如何可靠地打开与当前运行脚本在同一目录下的文件
- Python csv字符串到数组
- 如何在Python中进行热编码?
- 如何嵌入HTML到IPython输出?
- 在Python生成器上使用“send”函数的目的是什么?
- 是否可以将已编译的.pyc文件反编译为.py文件?
- Django模型表单对象的自动创建日期
- 在Python中包装长行
- 如何计算两个时间串之间的时间间隔
- 我如何才能找到一个Python函数的参数的数量?
- 您可以使用生成器函数来做什么?
- 将Python诗歌与Docker集成
- 提取和保存视频帧
- 使用请求包时出现SSL InsecurePlatform错误