为什么在此for循环中嵌套print(int(str))会导致Python 3错误?

时间:2019-03-10 03:15:19

标签: python

考虑以下Python 3代码:

a = 5349234832
for i in range(6):
    print(int(str(a)[0:i]))

运行此代码时,出现错误“ ValueError:int()以10为底的无效文字”。另一方面,类似这样的东西也可以很好地工作:

print(int(str(a)[0:5]))

(如您所料,它返回53492。)我认为错误可能是变量i不是int,所以我尝试了:

a = 5349234832
for i in range(6):
    print(int(str(a)[0:int(i)]))

这将引发相同的错误。怎么了?

1 个答案:

答案 0 :(得分:2)

  • i在for循环的第一次迭代中等于0
  • str(a)[0:0]返回空字符串(因为没有要分割的内容)。
  • int('')引发您的ValueError。

如果要避免i等于0,请从1开始范围:

a = 5349234832
for i in range(1, 6):
    print(int(str(a)[0:i]))