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。它是一个整数。