Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python输入给出了错误的结果_Python_User Input - Fatal编程技术网

Python输入给出了错误的结果

Python输入给出了错误的结果,python,user-input,Python,User Input,我试图用输入语句输入数字,一切正常,唯一的问题是当我用“0”开始数字时。它给出了错误的结果。有人能解释一下到底发生了什么,为什么会得出错误的结果吗 下面是一个小例子: >>> a = input("> ") > 12345 >>> a 12345 >>> a = input("> ") > 012345 >>> a 5349 >>> print a 5349 &

我试图用输入语句输入数字,一切正常,唯一的问题是当我用“0”开始数字时。它给出了错误的结果。有人能解释一下到底发生了什么,为什么会得出错误的结果吗

下面是一个小例子:

 >>> 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