簡體   English   中英

for 循環中的計數器沒有變化

[英]The counter in the for loop doesn't get change

當我在給定的代碼中放入 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)

計數器 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

你可以這樣實現你的循環。

i是計數器,所以如果你將它設置為循環內的一個值,它就不會正確計數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM