2
votes

Imprimer chaque mot dans une chaîne en utilisant le découpage d'index

Je veux imprimer chaque mot de word = "Ils trébuchent qui courent vite" sur une nouvelle ligne en utilisant le découpage d'index.

J'ai essayé d'utiliser un while code > boucle, comme imprimer des mots après chaque espace

They
stumble
who
run
fast

Le résultat devrait être comme ceci:

word = "They stumble who run fast"
space = word.count(' ')
start = 0
while space != -1:
   print(word[start:space])


0 commentaires

4 Réponses :


3
votes

Si vous devez absolument utiliser le découpage d'index:

They
stumble
who
run
fast

Sortie:

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

Mais pourquoi ne pas utiliser .split () ?

They
stumble
who
run
fast

Résultat:

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())


0 commentaires

0
votes

La solution évidente serait d'utiliser str.split , mais cela violerait votre désir de trancher:

print(word.replace(' ', '\n'))

Une meilleure façon pourrait être de garder une trace de un index de l'espace actuel et continuez à chercher le suivant. Ceci est probablement similaire à ce que vous aviez en tête, mais votre boucle ne se met pas à jour et les variables:

start = 0
try:
    while True:
        end = word.index(' ', start)
        print(word[start:end])
        start = end + 1
except ValueError:
    print(word[start:])

Un raccourci qui ne sera probablement pas acceptable non plus, mais qui produit le sortie souhaitée:

for w in word.split():
    print(w)


0 commentaires

0
votes

Je ne sais pas pourquoi quelqu'un voudrait faire cela plutôt que d'utiliser simplement str.split () , mais voici une autre façon (assez moche) de suivre votre tentative initiale.

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


0 commentaires

1
votes

Je pense savoir à quoi sert ce problème (classe edx..comme je suis tombé sur la même chose). Cette solution a fonctionné pour moi en utilisant les éléments qu'ils encouragent les étudiants à utiliser à ce stade du cours:

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])


0 commentaires