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

Python判断数组是否含1,2,3序列:我的代码问题出在哪?

关于检查数组中是否存在连续1、2、3序列的代码问题

没错,你必须把return False移出最后一个if的分支,这正是你初始代码出现逻辑错误的核心原因!

为什么初始代码会出错?

你的初始代码里,else: return False嵌套在for循环的if语句中——这意味着只要第一次检查的连续三个元素不匹配[1,2,3],函数就会直接返回False,完全跳过了对后续元素的检查。比如输入数组是[0,1,2,3]时,第一次循环i=0对应的子序列[0,1,2]不匹配,代码就立刻返回False,根本没机会检查i=1时的[1,2,3],这显然不符合你“只要存在连续1、2、3就返回True”的需求。

修改后的代码为什么正确?

修改后的代码把return False放在了for循环的外面:

  • 循环会遍历所有可能的连续三个元素(range(len(nums)-2)确保不会出现数组越界问题);
  • 只要找到任意一组匹配的[1,2,3],就立即返回True;
  • 只有当整个循环跑完,所有可能的子序列都检查过且没有匹配时,才会执行最后的return False,完美贴合了需求逻辑。

小优化建议(可选)

其实你可以不用提前定义arr1,直接在判断里写目标序列,代码会更简洁:

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:01:47