另一个追加问题......这是我的代码:
def s(xs,n,m):
t = []
while n < m:
n += 2
t.append(xs[n])
return t
当我评估以下内容时:
x = s('African', 0, 3)
为什么要归还?:
['r', 'c']
答案 0 :(得分:3)
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&gt; m,所以函数返回['r', 'c']
。一切都是正确的。
答案 1 :(得分:2)
好的,一行一行......
您的电话如下:
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']
。
足够清楚了吗?它有帮助吗?