Python - Добавить справку - Строка и список - PullRequest
0 голосов
/ 17 ноября 2011

Еще один дополнительный вопрос ... Это мой код:

def s(xs,n,m):
    t = []
    while n < m:
        n += 2
        t.append(xs[n])
    return t

Когда я оцениваю следующее:

x = s('African', 0, 3)

Почему он возвращает это?:

['r', 'c']

Ответы [ 2 ]

3 голосов
/ 17 ноября 2011
while n < m:
    n += 2 # at this point n = 2 because you've passed 0
    t.append(xs[n]) # you append r to t since xs[2] = r

но n

while n < m:
    n += 2 # at this point n = 4
    t.append(xs[n]) # you append c to t since xs[4] = c

теперь n> m, поэтому функция возвращает ['r', 'c'].Все правильно.

2 голосов
/ 17 ноября 2011

Хорошо, так построчно ...

Ваш звонок выглядит следующим образом:

x = s('African', 0, 3)

так что происходит:

  1. Шаг 1. - начальное назначение

    def s(xs,n,m):
    

    xs='African', n=0 и m=3, а затем:

    t = []
    

    (поэтому вводится пустой список t).

  2. Шаг 2. - цикл

    1. Затем оценивается следующее условие:

      while n < m:
      

      до True, потому что 0 < 3.

    2. А затем n увеличивается:

      n += 2
      

      , поэтому теперь он равен 2.

    3. Затем соответствующий элемент добавляется в пустой список t:

      t.append(xs[n])
      

      , и этот элемент равен "r", потому что xs[2] == 'r'.

    4. Затем условие n < m снова оценивается как True (потому что 2 < 3), поэтому цикл выполняется снова:

      n += 2
      

      и n теперь равно4.

    5. Затем соответствующий символ из строки xs добавляется в список t (в котором уже есть один элемент, r, как мыупомянуто выше).

      t.append(xs[n])
      

      и этот элемент равен "c" (поскольку xs[4] в точности равно "c").

    6. Тогда условиедля while цикл снова вычисляется, но на этот раз до False (поскольку 4 < 3 не соответствует действительности), поэтому цикл прекращает выполнение ...

  3. (шаг 3. - после цикла) ... и поток программы переходит к последнему утверждению функции, а именно:

    return t
    

И t возвращаетсписок мы заполнили двумя элементами - в результате функция возвращает список ['r', 'c'].

Достаточно ли ясно?Это помогло?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...