for/while 循环之间的区别

时间:2021-02-08 15:11:27

标签: python for-loop while-loop

此函数应返回值 2 而不是 3。 它适用于 while 循环,但我想知道为什么它不适用于这个看起来与我非常相似的 for 循环。

def count_words(string, word):
    i = 0
    count = 0
    for i in range(len(string)):
        if string[i:i+len(word)] == word:
            count +=1
            print("count",i)
            i += len(word)
        else:
            i += 1
    return count
print(count_words("AAAA","AA"))

2 个答案:

答案 0 :(得分:0)

您不能在循环内更改 i,这将修复您的代码:

def count_words(string, word):
    j = 0
    count = 0
    for i in range(len(string)):
        if string[j:j+len(word)] == word:
            count +=1
            print("count",j)
            j += len(word)
        else:
            j += 1
    return count
print(count_words("AAAA","AA"))

答案 1 :(得分:0)

因为 for 循环将总是迭代 01、...直到 len(string) - 1。您在循环内对 i 所做的分配将被丢弃。

问题在于 range(...) 创建了一个 对象,它将产生一个新值,该值分配给 i 每次循环迭代。您在循环内对 i 进行的赋值不会改变范围对象返回的序列。