You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SPY GAME函数疑问:为何收集到[0,0,7]后仍继续添加元素?

SPY GAME 代码问题解析

你的问题核心出在内层while循环的判断条件和执行逻辑上:

当mynewlist已经收集到3个元素(也就是[0,0,7])时,len(mynewlist)等于3,满足len(mynewlist)<=3的条件,所以内层while循环依然会执行。这时候遍历到列表后面的0时,i==0的判断成立,就会把这个额外的0追加到mynewlist里,导致最终结果变成[0,0,7,0]。

把判断条件改成len(mynewlist)<=2后,当mynewlist长度达到3时,条件不成立,内层while循环直接跳过,自然不会处理后续的元素,也就不会多追加0了。

另外你的代码里内层while其实完全没必要——因为每个分支都有break,while循环本质上只执行一次,不如直接换成if判断,还能在收集到足够元素时直接终止外层循环,优化效率:

def spy_game(nums):
    mynewlist = []
    for i in nums:
        if len(mynewlist) >= 3:
            break  # 已经凑够007,不用继续遍历了
        if i == 0 or i == 7:
            mynewlist.append(i)
    return mynewlist == [0,0,7]

内容的提问来源于stack exchange,提问作者Rey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 05:42:50