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])
4 Réponses :
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())
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)
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
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])