[英]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()为您提供index
和iterable
的value
。
>>> 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.