for循环中的计数器不变

时间:2019-08-04 10:34:40

标签: python python-3.x

当我在给定代码中放入i = x时,for循环中的i不会改变。

s=input()
d={}
Str=""
for i in range(len(s)):
    if s[i] not in d:
        d[s[i]]=i
    else:
        x=d[s[i]]
        res=str("".join(d.keys()))
        if len(Str)<len(res):
            Str=res
        i=x
        d.clear()
print(Str)

2 个答案:

答案 0 :(得分:1)

计数器i确实更改为x,但仅用于简短实例。考虑一下for i in range(n)的实现方式:

i = first value in range
while True:
    do something;
    i=x; # your assignment
    if no more values in range:
        break;
    else:
        i = next value in range;

因此,在将x分配给i之后,您最终到达了for循环的底部,并将范围表达式中的下一个值分配给i。

上面的方法并不完全是range的实现方式,但是您可以理解。您期望它的行为更像:

i = 0
while i < n:
    do something;
    i = x;
    i += 1

您可以通过这种方式实现循环。

答案 1 :(得分:0)

i是计数器,因此,如果将其设置为循环内的值,将无法正确计数。