在python中将字符串转换为int

时间:2015-01-02 17:54:54

标签: python

a="1234"
for i in range(0,4):
            for k in range(i,4):
                s=int(a[i:k])
                print s

输出:

Traceback (most recent call last):
  File "C:/Python27/Solutions/test.py", line 4, in <module>
    s=int(a[i:k])
ValueError: invalid literal for int() with base 10: ''

任何人都可以告诉我为什么会收到此错误? 我只想打印: 1 12 123 1234 2 23 234 等等...

2 个答案:

答案 0 :(得分:2)

>>> a= "1234"
>>> a[0:0]   # in slice if start and end is same you will get empty string
''
>>> int(a[0:0])
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: ''
>>> 

我想你想要这个?

>>> for i in range(3):
...     for k in range(i,4):
...         print int(a[i:k+1])
... 
1
12
123
1234
2
23
234
3
34

答案 1 :(得分:0)

您收到此错误是因为循环(i=0,k=0)的第一次迭代需要a[0:0]=''(空字符串)。字符和数字字符串可以转换为整数,但空字符串不是字符或字符串。没有人物。

如果你要保护这种情况,你的循环将随后采用(example '123', i=0, k=3)的子串,这可以转换为整数123.其余的情况应该输出所需的整数。