startswith() 函数在 while 循环中不起作用但在 for 循环中起作用? python

startswith() function not working in while loop but works in for loop? python

while-loop 不工作

i=0

l1=["rohan","sachin","sam","raj"]

while i<len(l1):

    if l1[i].startswith('s'):  #if i comment out  this line it is working 

        print("GREET "+l1[i])

        i=i+1

缩进在 Python 中很重要。

你必须每次都增加你的计数器i,而不仅仅是在你打印的时候,否则它是一个无限循环。

i=0

l1=["rohan","sachin","sam","raj"]

while i<len(l1):

    if l1[i].startswith('s'): 

        print("GREET "+l1[i])

    i=i+1 # <- increment counter outside of if-block!

这是因为 i 的递增是在 if 条件而不是 while 循环中完成的。由于列表中的第一个单词不是以“S”开头,因此如果 i 没有递增并且 while 循环永远执行,它就不会进入内部。这只是一个逻辑问题

是的,将计数器向左移动后它就可以工作了。计数器应该放在 if 块的外面。