这段代码出了什么问题:
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'
答案 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 ) )