如何检查变量是否为整数?
当前回答
你也可以使用str.isdigit。尝试查找帮助(str.isdigit)
def is_digit(str):
return str.isdigit()
其他回答
如果你想写一个Python 2-3兼容的代码
要测试一个值是否为整数(任何类型),你可以这样做:
# 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
当这样一个基本的,有效的,我认为是平凡的问题被提出时,看到如此激烈的讨论真是令人震惊。
有些人指出,针对int(和long)的类型检查可能会在遇到大十进制数的情况下出错。完全正确。
有些人指出,你应该“只做x + 1,看看是否会失败”。好吧,一方面,这也适用于浮点数,另一方面,很容易构造一个肯定不是很数字的类,但以某种方式定义了+运算符。
我不同意许多大力宣称你不应该检查类型的帖子。好吧,GvR曾经说过这样的话,在纯理论中,这可能是对的,但在实践中,isinstance通常是有用的(那是一段时间前,没有链接;你可以在类似这篇文章中阅读GvR对相关问题的看法)。
有趣的是,很多人似乎认为OP的意图是检查给定x的类型是否为数值整数类型——我所理解的是我通常在使用OP的话时的意思:x是否代表整数。这是非常重要的:比如问别人他们想选多少个项目,你可能想检查你得到的是一个非负整数。这样的用例比比皆是。
在我看来,重要的是要看到(1)类型检查只是程序正确性的一种度量,而且通常是相当粗略的,因为(2)通常是有边界的值有意义,而越界的值毫无意义。有时,只有一些间歇值是有意义的——比如考虑所有的数字,在给定的情况下,只有那些实数(非复数)、整数是可能的。
有趣的是,似乎没有人提到检查x == math。楼层(x)。如果这应该给出一些大的十进制类的错误,那么也许是时候重新思考OOP范式了。还有PEP 357考虑了如何使用不那么明显是整数但肯定是整数的值作为列表索引。我不确定我是否喜欢这个解决方案。
我可以检查数字是否是整数,包括像7.0这样的数字
def is_int(x):
if x - round(x) == 0 :
return True
else:
return False
我以前遇到过这个问题,如果你的类型在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,如果你知道我的意思的话)。
还有另一个选项可以进行类型检查。
例如:
n = 14
if type(n)==int:
return "this is an int"
推荐文章
- 从URL中获取参数
- 在python中插入一个列表到另一个列表的语法是什么?
- Python中的最大浮点数是多少?
- Java整数到字节数组
- 将一个列表分成大约相等长度的N个部分
- Python __str__与__unicode__
- 在python中,del和delattr哪个更好?
- 如何动态加载Python类
- 有没有办法在python中做HTTP PUT
- “foo Is None”和“foo == None”之间有什么区别吗?
- 类没有对象成员
- Django模型“没有显式声明app_label”
- 熊猫能自动从CSV文件中读取日期吗?
- 在python中zip的逆函数是什么?
- 有效的方法应用多个过滤器的熊猫数据框架或系列