请解释循环如何工作。 我知道如何解决这个问题,同时使用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"))
Shell
这是怎么回事?谢谢
答案 0 :(得分:0)
你在范围循环中将完全迭代你传递的字符串长度的次数 ... 你不能通过在i内递增i来使循环更进一步跳跃循环...它与i = 0到i<的情况不同。长度 ...
以这种方式考虑你的输出......
范围内的第一次迭代为您提供......
范围内的0其他
第二次迭代为您提供......
范围内的1其他
第三次迭代为您提供......
3 lol 4里面 5里面 6
第四次迭代 回到3,因为循环是零索引,它是第四次迭代,所以你得到 ...
3其他
为了使i的循环以不同于1的步长变化,您可以指定范围内的步骤...例如。
for i in range(0,10,2):
总结: 你认为你在循环中对i的操作应该延续到你回到循环顶部时,但它没有,它只是从你最后一次在循环顶部时增加1。 /强>