Python输入给出错误的resu

2024-03-28 22:03:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用输入语句输入数字,一切正常,唯一的问题是当我用“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)


Tags: inputifwindows错误数字语句xp例子
3条回答

在Python中,以0开头的数字以8(八进制)为基数。您将注意到以0开头的数字具有89将引发异常。你知道吗

顺便说一句,您不应该在python2中使用input(),因为它会计算输入。改用raw_input(),然后将其转换为int。如果您想摆脱base 8问题,那么将10作为第二个参数传递给int()(base):

a = raw_input('> ')
try:
    a = int(a, 10)
except ValueError:
    #do something
print a

在python2中,以0开头的数字将其标记为八进制(以8为基数)。你知道吗

12345十月=5349十二月

^{}计算从流中读取的任何内容—因此它被读取为一个数字并作为整数返回。你知道吗

听起来像是在寻找^{},它给出了从流中读取的字符串

(因此input('> ')eval(raw_input('> '))相同)

正如@Tim所说,整数值似乎出乎意料,因为python将该值解释为八进制。你知道吗

相关问题 更多 >