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"))
外壳
- >>> 0 其他
- >>> 1 个其他
- >>> 3 哈哈
- >>> 4 里面
- >>> 5里面
- >>> 6
- >>> 3 其他
- >>> 4 其他
- >>> 5 其他
- >>> 6 其他
- >>> 7 其他
- >>> 9 哈哈
- >>> 10个里面
- >>> 11
- >>> 9 其他
- >>> 10 其他
- >>> 11 其他
- >>> 13 哈哈
- >>> 14个里面
- >>> 15
- >>> 13 其他
- >>> 14 其他
- >>> 15 其他
- >>> 16 其他
- >>> ABcccccccccccc12c]dEE2E]FFFF4F]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 的操作应该延续到你回到循环顶部的时候,但事实并非如此,它只是从你上次在循环顶部时增加了一个。
请解释 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"))
外壳
- >>> 0 其他
- >>> 1 个其他
- >>> 3 哈哈
- >>> 4 里面
- >>> 5里面
- >>> 6
- >>> 3 其他
- >>> 4 其他
- >>> 5 其他
- >>> 6 其他
- >>> 7 其他
- >>> 9 哈哈
- >>> 10个里面
- >>> 11
- >>> 9 其他
- >>> 10 其他
- >>> 11 其他
- >>> 13 哈哈
- >>> 14个里面
- >>> 15
- >>> 13 其他
- >>> 14 其他
- >>> 15 其他
- >>> 16 其他
- >>> ABcccccccccccc12c]dEE2E]FFFF4F]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 的操作应该延续到你回到循环顶部的时候,但事实并非如此,它只是从你上次在循环顶部时增加了一个。