Python输入给出了错误的结果
我试图用输入语句输入数字,一切正常,唯一的问题是当我用“0”开始数字时。它给出了错误的结果。有人能解释一下到底发生了什么,为什么会得出错误的结果吗 下面是一个小例子:Python输入给出了错误的结果,python,user-input,Python,User Input,我试图用输入语句输入数字,一切正常,唯一的问题是当我用“0”开始数字时。它给出了错误的结果。有人能解释一下到底发生了什么,为什么会得出错误的结果吗 下面是一个小例子: >>> a = input("> ") > 12345 >>> a 12345 >>> a = input("> ") > 012345 >>> a 5349 >>> print a 5349 &
>>> a = input("> ")
> 12345
>>> a
12345
>>> a = input("> ")
> 012345
>>> a
5349
>>> print a
5349
>>> if a == 012345: print "matched"
matched
我不明白这一点。谢谢你的帮助!(Windows XP,Python 2.7.3)对从流中读取的内容求值-因此它被读取为一个数字并作为整数返回
这听起来像是您正在寻找的,它将从流中读取的内容作为字符串提供
(因此input('>')
与eval(raw_input('>'))
相同)
如上所述,整数值似乎出乎意料,因为python将该值解释为八进制。在python 2中,以
0开头的数字将其标记为八进制(以8为基数)
12345 oct=5349 dec在Python中,以0开头的数字被识别为以8为基数(八进制)。您会注意到以0
开头的数字具有8
或9
将引发异常
作为补充说明,在Python2中不应该使用input()
,因为它会计算输入。改用raw\u input()
,然后将其转换为int
。如果要解决基数8问题,请将10
作为第二个参数传递给int()
(基数):
自定义解析器int
接受可选的base
参数<代码>整数('012345',10)=12345
a = raw_input('> ')
try:
a = int(a, 10)
except ValueError:
#do something
print a