for循环中的python while循环不中断
为什么这不适合循环中断?我得到的只是stats变量的第一个字母和从0到无穷大的计数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] == ',':
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
>>>
你到底想解决什么问题?遗憾的是,您的实际代码有很多逻辑错误:(removewhile True:
及其break
代码陷入无限循环,因为while循环中的字母
从未更改。从代码外观上看,很难说您在这里真正想要实现什么——不过,如果您愿意让我们知道实际的专业代码,我敢打赌python有一种更简洁的方法您试图解决的问题。这种方法很有效,但是当test是stats的值时,我得到了:tes,t作为输出