为什么Python会为int()的有效字符串抛出ValueError?

时间:2016-10-12 23:58:52

标签: python-2.7 integer base

为什么会这样?:

>>> int('20', 3)
6
>>> int('8', 3)

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    int('8', 3)
ValueError: invalid literal for int() with base 3: '8'

是的,我看过这篇文章:ValueError: invalid literal for int() with base 10: ''

但'8'没有任何小数。它也没有任何空白。为什么这不起作用?当然可以在基数3中表示8。

1 个答案:

答案 0 :(得分:2)

  

为什么这不起作用?

因为8是基数3中的无效整数。基数3只允许从0(包括)到2(不包括)的整数,从而导致ValueError

  

当然可以在基数3中表示8。

是的,但那不是int()所做的。它将表示转换为数字。

>>> int('22', 3)
8

如上所示,int在中指定基数中的,它们将其转换为整数。