def summer_of69(arr):
total =0
add = True
for num in arr:
while add:
if num!= 6:
total+=num
break
else:
add = False
while not add:
if num!=9:
break
else:
add= True
break
return total
在这段代码中,如果我传递summer_of69([2,5,6,9,11])
,为什么9会被忽略而11会被添加?
我得到的输出18是正确的,但我想知道第二次while循环在这里是如何工作的。
6之后的9和11是如何工作的?
为了理解任何复杂的循环系统是如何工作的,你只需要一步一步地浏览代码,并像计算机那样计算逻辑。
当num
变成6
时,想想当它通过两个while
循环时会发生什么。
第一个while
循环没有将6
添加到total
,而是将变量add
转换为False
。
由于add
现在是False
,第二个while
循环触发,但随后立即中断。
现在num
是9
,因为add
是False
,所以第一个while
循环不执行。
代替第二个,add
变成了True
。
最后,现在add
为True
,当num
为11
时,执行第一个while
循环,将11
添加到总数中,而第二个while
循环不执行。
你只需要花点时间在脑子里把它想清楚,如果它变得太复杂了,在你的脑子里做不出来,网上有很多可视化执行程序可以帮你完成。