我想使用索引切片将word = "They stumble who run fast"
中的每个单词打印在新行上。
我尝试使用while
循环,例如在每个空格后打印单词
word = "They stumble who run fast"
space = word.count(' ')
start = 0
while space != -1:
print(word[start:space])
结果应该是这样的:
They
stumble
who
run
fast
答案 0 :(得分:3)
如果您绝对需要使用索引切片:
word = "They stumble who run fast"
indexes = [i for i, char in enumerate(word) if char == ' ']
for i1, i2 in zip([None] + indexes, indexes + [None]):
print(word[i1:i2].strip())
输出:
They
stumble
who
run
fast
但是为什么不使用.split()
?
word = "They stumble who run fast"
print(*word.split(), sep='\n')
输出:
They
stumble
who
run
fast
答案 1 :(得分:1)
我想我知道这个问题是什么原因(edx类..我碰到同样的事情)。此解决方案对我很有效,使用了一些鼓励学生在课程中此时使用的作品:
quote = "they stumble who run fast"
start = 0
space_index = quote.find(" ")
while space_index != -1:
print (quote[start:space_index])
start = space_index+1
space_index = quote.find(" ", space_index+1)
else:
print (quote[start::1])
答案 2 :(得分:0)
显而易见的解决方案是使用str.split
,但这会违反您的切片意愿:
for w in word.split():
print(w)
更好的方法可能是跟踪当前空间的索引并继续寻找下一个索引。这可能与您所想的相似,但是循环不会更新且不会更改:
start = 0
try:
while True:
end = word.index(' ', start)
print(word[start:end])
start = end + 1
except ValueError:
print(word[start:])
可能也不可接受的快捷方式,但是会产生所需的输出:
print(word.replace(' ', '\n'))
答案 3 :(得分:0)
不确定为什么有人会想这样做而不是仅仅使用str.split()
,但这是您最初刺中的另一种(相当丑陋的)方式。
word = "They stumble who run fast"
while ' ' in word:
i = word.index(' ')
print(word[:i])
word = word[i+1:]
print(word)
# OUTPUT
# They
# stumble
# who
# run
# fast