为什么这不是for循环中断?我得到的只是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])发布于 2014-02-21 19:58:11
它不会中断,因为您的letter在while循环中永远不会改变。如果
stats[letter] != ','在while循环开始时,该分支将被一遍又一遍地使用。
发布于 2014-02-21 20:02:46
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(",,,,,")发布于 2014-02-21 20:03:06
这就是你要解决的问题吗?内置的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
>>> https://stackoverflow.com/questions/21933853
复制相似问题