Python for loop- 为什么我先到 6 然后再到 3?

Python for loop- why does i goes to 6 then goes to 3 again?

请解释 for 循环是如何工作的。 我知道如何解决这个问题,同时使用 while 循环和 for 循环(注释代码)

def decode(string):
    aux = ''
    for i in range(len(string)):
        if(string[i] == '['):
            num = ''
            i+=1
            print(i,"lol")
            while(string[i].isdigit()):
                num+=string[i]
                i+=1
                print(i,'inside')
            aux+= string[i]*int(num)
            i+=1
            print(i)
        #elif string[i].isalpha():
        else:
            print(i,'else')
            aux += string[i]
    return aux

if __name__ == '__main__':
    print(decode("AB[12c]d[2E][4F]g"))

外壳

这是如何运作的?谢谢

您的 for in range 循环将精确迭代您传递的字符串长度的次数... 您不能导致循环跳转通过在循环中递增 i 进一步前进...它与 a for i = 0 to i < length...

不同

以这种方式思考你的输出...

范围内的第一次迭代 给你...

0 else

范围内的第二次迭代 给你...

1 else

范围内的第三次迭代 给你...

3 lol 4 inside 5 inside 6

第四次迭代 返回到 3 因为循环是零索引并且它是第四次迭代所以你得到...

3 else

为了让 i 以不同于一个的步长变化的循环,您可以指定范围内的步长...例如。

for i in range(0,10,2):

总结: 你在想你在循环中对 i 的操作应该延续到你回到循环顶部的时候,但事实并非如此,它只是从你上次在循环顶部时增加了一个。