Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
for循环中的python while循环不中断_Python_For Loop_While Loop_Break - Fatal编程技术网

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

for循环中的python while循环不中断,python,for-loop,while-loop,break,Python,For Loop,While Loop,Break,为什么这不适合循环中断?我得到的只是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] == ',':

为什么这不适合循环中断?我得到的只是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])

它不会中断,因为您的
字母在while循环中从未更改。如果

stats[letter] != ','
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(",,,,,")

这就是你想要解决的问题吗?内置项为您提供
索引
iterable的

>>> 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
>>> 

你到底想解决什么问题?遗憾的是,您的实际代码有很多逻辑错误:(remove
while True:
及其
break
代码陷入无限循环,因为while循环中的
字母
从未更改。从代码外观上看,很难说您在这里真正想要实现什么——不过,如果您愿意让我们知道实际的专业代码,我敢打赌python有一种更简洁的方法您试图解决的问题。这种方法很有效,但是当test是stats的值时,我得到了:tes,t作为输出