python-3.x 使用索引切片打印字符串中的每个单词

eimct9ow  于 2022-12-15  发布在  Python
关注(0)|答案(6)|浏览(137)

我想使用索引切片将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
piwo6bdm

piwo6bdm1#

如果您确实需要使用索引切片:

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

5n0oy7gb2#

我想我知道这个问题是什么(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])
apeeds0o

apeeds0o3#

如果学生需要一个示例并且必须执行索引切片,则以另一种方式发布。

check = 0 # Here we start slicing at zero
    
    split = 0
    
    for x in word:
        if x == ' ':  # Will check for spaces
            print(word[check:split])
            check = split + 1  # check will inherit splits value plus one when space found
        split = split + 1  # spit will increase each time no space is found
    print(word[check:split])  # needed to print final word
v1l68za4

v1l68za44#

显而易见的解决方案是使用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'))
yqkkidmi

yqkkidmi5#

不知道为什么有人会想这样做,而不仅仅是使用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
brgchamk

brgchamk6#

我们别想太多了。
如果你不需要索引切片,那么只需:

word = "They stumble who run fast"
print (word.replace(" ", '\n'))

相关问题