为什么我得到索引错误?

时间:2012-05-29 06:04:21

标签: python

ant=['1']  
round = 30  

while round:  
    ant += '!'  
    next = []  
    start = 0  

    for current in range(len(ant)):  
        if ant[current] != ant[start]:  
            next.append(str(current-start)+ant[start])  
            start = current  
    ant = "".join(next)  

    round-=1  

print len(ant)  

我在博客中获得了这个来源并试图在3.2上运行它。

(关于制作蚂蚁序列。[1,11,12,1121,&c]

但是在第10行,' IndexError:字符串索引超出范围'流行音乐,我几乎不明白为什么。

2 个答案:

答案 0 :(得分:1)

您的代码runs fine for me


test.py:

ant=['1']
round = 30

while round:
    ant += '!'
    next = []
    start = 0

    for current in range(len(ant)):
        if ant[current] != ant[start]:
            next.append(str(current-start)+ant[start])
            start = current
    ant = "".join(next)

    round-=1

print len(ant)

$ python test.py
5808

答案 1 :(得分:1)

您的代码在我的计算机上正常运行。我的python版本是2.7

len(ant)是5808

但是我认为你的python代码不是很清晰而且不是pythonic。您可以阅读此linkthis

例如,

使用此

for index, x in enumerate(ant):

而不是for current in range(len(ant)):

不要使用ant +='!'。它应该是ant.append('!')

祝你好运