5

这段代码有什么问题:

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

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

谢谢你的帮助!

蟒蛇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'
4

5 回答 5

13

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

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

n = 10
((n/3.0)).is_integer()
于 2013-06-18T13:42:46.737 回答
5

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

于 2013-06-18T13:39:51.170 回答
4

其他答案说这个但不是很清楚(恕我直言)。

在 python 2 中,当参数是 integers 时/,符号表示“整数除法” 。只为您提供结果的整数部分:

>>> 10/3
3

这意味着(10/3).is_integer()您正在调用is_integer()on 3,它是一个整数。这不起作用:

>>> (3.0).is_integer()
True
>>> (3).is_integer()
AttributeError: 'int' object has no attribute 'is_integer'

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

>>> (10/3.0).is_integer()
False

顺便说一句,这是在 python 3 中修复的(这是未来,在许多小方面是一种更好的语言)。

于 2013-06-18T13:53:26.793 回答
-1

可以使用isdigit,这是Python自己提供的一个很好的功能

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

    if token.isdigit():
        return int(token)
于 2017-07-11T06:51:24.880 回答
-2

...

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

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

isinstance( <var>, ( int, long ) )
于 2013-06-18T13:32:41.943 回答