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

为何检测1,2,3连续序列的Python代码返回结果不符合预期?

问题分析与修复

首先,咱们先看看你写的代码:

def arrayCheck(nums):
    for i in range(len(nums)-2):
        if nums[i]==1 and nums[i+1]==2 and nums[i+3]==3:
            return True
    return False

x=arrayCheck([1, 1, 2, 3, 1])
print(x)

核心错误点

你在判断连续序列的时候,索引用错了!要找连续的1、2、3,对应的索引应该是i、i+1、i+2,但你写成了nums[i+3]——这就相当于跳过了中间的位置,去检查第四个元素了!

比如你测试的数组[1, 1, 2, 3, 1],当循环到i=1的时候:

  • nums[1]是1,nums[2]是2,这俩都符合,但你去看nums[1+3]也就是nums[4],它的值是1,不是3,所以这个条件没触发。而正确的应该是检查nums[1+2]也就是nums[3],它的值正好是3,这时候就能返回True了。

修复后的代码

把*nums[i+3]改成nums[i+2]*就行:

def arrayCheck(nums):
    for i in range(len(nums)-2):
        if nums[i]==1 and nums[i+1]==2 and nums[i+2]==3:
            return True
    return False

x=arrayCheck([1, 1, 2, 3, 1])
print(x)  # 现在会输出True

额外小提醒

你的循环范围range(len(nums)-2)是完全正确的,因为这样能保证i+2不会超出数组的索引范围,避免出现索引越界的错误,这点做得很棒!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:56:55