Что происходит в это время, пока l oop in python - PullRequest
0 голосов
/ 07 января 2020

Итак, я выучил второй курс python по edx, и вот код, который я написал, но пока не совсем понимаю эту часть l oop. Может ли кто-нибудь объяснить мне, что мне 6 лет, что там происходит?

Код:

# [ ] Print each word in the quote on a new line  
quote = "they stumble who run fast"
start = 0
space_index = quote.find(" ")

while space_index != -1:  #the code in while needs to be explained to me 
    print(quote[start:space_index])
    start = space_index +1
    space_index = quote.find(" ", space_index +1)

Ответы [ 2 ]

1 голос
/ 07 января 2020

Ваш код пытается продемонстрировать, как извлечь подстроку из строки по индексу в Python, используя while l oop, имеющий в качестве условия остановки этот индекс.

Документация Python для функции find () строки находится здесь . Цитата из него:

enter image description here

Шаги таковы:

  1. Как получить индекс первого вхождения данного символа в строке quote. В этой строке: quote.find(" ") возвращает индекс первой позиции пробела . Поэтому space_index будет равно 4, когда начнется l oop.

  2. Как извлечь подстроку из строки. В этой строке : quote[start:space_index] если вы переводите переменные start и space_index, то у вас есть: quote[0,4], что равно «они» в первой итерации.

  3. Как увеличить индекс. В конце while вы снова делаете quote.find(" ", space_index +1), пытаясь получить индекс пробела " ". Но на этот раз позиция, с которой вы начинаете поиск, равна space_index+1, которая на первой итерации будет равна 5. Функция quote.find вернет значение 12.

  4. Итак во 2-й итерации while: вы будете пытаться получить подстроку quote[start:space_index] или подставить значения: quote[5:12], которые будут вторым словом "запинаться".

Вы должны попытаться узнать, как использовать отладчик используемой вами среды IDE, или попытаться распечатать все промежуточные значения, чтобы вы могли их видеть.

1 голос
/ 07 января 2020

Код в основном печатает каждое слово, разделенное пробелом, построчно.

Фрагмент комментария:

# [ ] Print each word in the quote on a new line  
quote = "they stumble who run fast"
start = 0    ## index of first character
space_index = quote.find(" ")

while space_index != -1:  #the code in while needs to be explained to me 
    print(quote[start:space_index])   ## print characters from start index to space character
    start = space_index +1            ## shift the start index to just after the up-coming space character
    space_index = quote.find(" ", space_index +1)  ## find the index of the next space character
...