I'm taking this Python course online我试图弄清楚当x值为3时这个循环是无限的
def mystery(x):
a = [0, 4, 0, 3, 2]
while x > 0:
x = a[x]
return "Done"
神秘(3)无限奔跑。
是不是因为当列表值已经是3时,它一直试图将x设置为3?
答案 0 :(得分:4)
记住数组索引从0开始,所以如果
a = [0, 4, 0, 3, 2]
然后a[3] == 3
所以这一行
x = a[x]
永远不会将x
设置为3以外的任何内容!
答案 1 :(得分:2)
“是不是因为当列表值已经是3时,它一直试图将x设置为3?”
是。 a[3]
指向该列表中的3
。因此x
只是被重复分配给3
。
答案 2 :(得分:1)
是的,x总是3.最初x是3,而索引3是list的值,即a [x]也是3.Hence无限循环。
答案 3 :(得分:0)
请记住,列表索引从零开始,因此a [3] = 3。然后,尝试手动展开循环:
x = 3
是x = 3> 0,是
x = a [x] = a [3] = 3
是x = 3> 0,是
x = a [x] = a [3] = 3
是x = 3> 0,是
等等。
答案 4 :(得分:0)
def mystery(x): # Here x = 3
a = [0, 4, 0, 3, 2]
while x > 0: # Since x = 3 the program enters the loop
x = a[x] # a[3] = 3 and hence x is assigned 3. Again x = 3 and therefore
# the program will get into an infinite loop in the while
# statement.
return "Done"