Python处理从0开始的整数?
问题描述:
我对Python相对比较陌生,但通常觉得它很容易解决。不过,我刚刚遇到了一些让我感到不适的东西。Python处理从0开始的整数?
我知道类型检查不是非常的Pythonic,但我正在处理用户输入,这在这里似乎很有用。我期待下面的代码(在Python 2.7.6中)将一个不相关的输入改为一个空字符串,但在交互式解释器中试用时,它返回了一个意外的int。有人可以告诉我这是Python中的一个特殊值,还是解释为什么会发生这种情况。
我认为也许“代码”可能是一个保留变量的名称即。一个在内部使用,但更改名称似乎没有结果。
>>> code = 0134
>>> if type(code) is not int: code =""
...
>>> code
92
我确定我可以找到另一种方法来做我在这里要做的事情,所以这不是重点。我只想解决意外的int问题。
谢谢,
罗布
答
>>> code = 0134
在蟒2.7.6这个定义,因为八进制数132领先0。这是等于十进制92.
>>> if type(code) is not int: code =""
如果它不是int,那么你清除它。
>>> code = 0134
>>> type(code)
<type 'int'>
正如你可以看到你有一个int。当打印出来你得到的10为底的表示其是92.
混乱的这种特殊的原因导致了以下PEP http://legacy.python.org/dev/peps/pep-3127/
答
当数与Python中的0开始时,它被解释为八进制数。八进制0134是十进制的92。
我不知道为什么你认为这个值的类型不是int。它是一个整数。