繁体   English   中英

python while循环内的for循环不中断

[英]python while loop inside a for loop not breaking

为什么不进行循环中断? 我得到的只是stats变量的第一个字母和从0到无穷大的计数。

x = 0

for letter in range(0,len(stats)):
    while True:
        if stats[letter] != ',':
            x += 1
            print(stats[letter])
            print (x)
        elif stats[letter] == ',':
            break
    break
    print(stats[letter])

它不会中断,因为您的letter不会在while循环中被更改。 如果

stats[letter] != ','

while循环开始while ,该分支将被一遍又一遍地接管。

for letter in range(0,len(stats)-1):

    if stats[letter] != ',':
        x += 1
        print(stats[letter])
        print (x)
    elif stats[letter] == ',':
        break

print(stats[letter])

我认为上面的代码就是您想要的。 您不需要while循环, for循环将测试字符串stats中的每个字母,并且在进入逗号时会中断。

最后一行将打印逗号,如果字符串中没有逗号,则最后一个字母将打印。 另外,我更改了循环限制,因为我认为测试一个不存在的字符会出错。

编辑:它为我工作,虽然我认为另一个答案是这样做的更好的方法。 我在下面运行了这个测试脚本,每次遇到逗号时它就会崩溃。

#!/usr/bin/python

def SO_answer(stats):

x = 0

for letter in range(0,len(stats)-1):
        if stats[letter] != ',':
            x += 1
            print(stats[letter])
            print (x)
        elif stats[letter] == ',':
            break

print(stats[letter])


SO_answer("test")

SO_answer("testing, 1, 2, 3")

SO_answer("Here's a long string with a comma at the end,")

SO_answer(",,,,,")

这是您要解决的问题吗? 内置的enumerate()为您提供indexiterablevalue

>>> stats = 'this is my stats string, which is iterated until comma'
>>> for index, letter in enumerate(stats):
...     if letter == ',':
...         break
...     print index, letter
...     
... 
0 t
1 h
2 i
3 s
4  
5 i
6 s
7  
8 m
9 y
10  
11 s
12 t
13 a
14 t
15 s
16  
17 s
18 t
19 r
20 i
21 n
22 g
>>> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM