Хорошо, так построчно ...
Ваш звонок выглядит следующим образом:
x = s('African', 0, 3)
так что происходит:
Шаг 1. - начальное назначение
def s(xs,n,m):
xs='African'
, n=0
и m=3
, а затем:
t = []
(поэтому вводится пустой список t
).
Шаг 2. - цикл
Затем оценивается следующее условие:
while n < m:
до True
, потому что 0 < 3
.
А затем n
увеличивается:
n += 2
, поэтому теперь он равен 2
.
Затем соответствующий элемент добавляется в пустой список t
:
t.append(xs[n])
, и этот элемент равен "r
", потому что xs[2] == 'r'
.
Затем условие n < m
снова оценивается как True
(потому что 2 < 3
), поэтому цикл выполняется снова:
n += 2
и n
теперь равно4
.
Затем соответствующий символ из строки xs
добавляется в список t
(в котором уже есть один элемент, r
, как мыупомянуто выше).
t.append(xs[n])
и этот элемент равен "c
" (поскольку xs[4]
в точности равно "c
").
Тогда условиедля while
цикл снова вычисляется, но на этот раз до False
(поскольку 4 < 3
не соответствует действительности), поэтому цикл прекращает выполнение ...
(шаг 3. - после цикла) ... и поток программы переходит к последнему утверждению функции, а именно:
return t
И t
возвращаетсписок мы заполнили двумя элементами - в результате функция возвращает список ['r', 'c']
.
Достаточно ли ясно?Это помогло?