()。is_integer()不起作用

时间:2013-06-18 13:31:15

标签: python python-2.7 integer

这段代码出了什么问题:

n = 10
((n/3)).is_integer()

我不明白为什么我不能设置n =任何数字并检查它是否是整数。

感谢您的帮助!

python 2.7.4

错误:

Traceback (most recent call last):
  File "/home/userh/Arbeitsfläche/übung.py", line 2, in <module>
    print ((n/3)).is_integer()
AttributeError: 'int' object has no attribute 'is_integer'

5 个答案:

答案 0 :(得分:11)

您收到此错误的原因是因为您使用整数除法将整数10除以3,因此以int实例的形式获取整数3。然后,您尝试在该结果上调用方法is_integer(),但该方法位于float类中,而不是int类,正如错误消息所示。

快速解决方法是更改​​代码并除以3.0而不是3,这将导致浮点除法,并为您提供一个float实例,您可以在其上调用像你正在尝试的is_integer()方法。这样做:

n = 10
((n/3.0)).is_integer()

答案 1 :(得分:5)

您正在使用Python 2.7。除非你使用from __future__ import division,否则除以两个整数将返回你和整数。 is_integer仅存在于float,因此您的错误。

答案 2 :(得分:4)

其他答案说这个,但不是很清楚(imho)。

在python 2中,当参数为整数时,/符号表示“整数除法” 。它只给出了结果的整数部分:

>>> 10/3
3

表示在(10/3).is_integer() is_integer() 3 >>> (3.0).is_integer() True >>> (3).is_integer() AttributeError: 'int' object has no attribute 'is_integer' 上调用>>> (10/3.0).is_integer() False ,这是一个整数。这不起作用:

{{1}}

你可能想要的是将其中一个数字改为浮点数:

{{1}}

这在python 3中是固定的,顺便说一下(这是未来,并且在很多小方面都是一种更好的语言)。

答案 3 :(得分:-1)

你可以使用isdigit,这是Python本身提供的一个很好的功能

您可以在此处参考文档https://docs.python.org/2/library/stdtypes.html#str.isdigit

    if token.isdigit():
        return int(token)

答案 4 :(得分:-2)

...

当我写这个答案时,没有关于语言的信息。

但是在python2中你可以使用以下内容来检查它是否是整数

isinstance( <var>, ( int, long ) )