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

Python判断点列表所有点是否在指定矩形内的代码错误排查

问题背景

需要实现一个矩形范围点校验函数,规则为:接收两个矩形角点坐标、一个点列表作为入参,仅当列表内所有点都落在矩形范围内时返回True,其余情况均返回False。
预期运行结果:

  • allIn((0,0), (5,5), [(1,1), (0,0), (5,5)]) → True
  • allIn((0,0), (5,5), [(1,1), (0,0), (5,6)]) → False
  • allIn((0,0), (5,5), [])(空点列表) → False

当前编写的代码无法正确匹配后两种False场景,空列表返回值不符合要求,现有代码如下:

def allIn(firstCorner=(0,0), secondCorner=(0,0), pointList=[]):  
    x1 = firstCorner[0]     
    y1 = firstCorner[1]
    x2 = secondCorner[0] 
    y2 = secondCorner[1] 

    for i in range(len(pointList)):

        p_x = pointList[i][0] 
        p_y = pointList[i][1] 

    if not ((p_x >= x1 and p_x < x2) and (p_y >= y1 and p_y < y2)):
        return False

    return True
print(allIn((0,0), (5,5), [(1,1), (0,0), (5,5)]))
print(allIn((0,0), (5,5), [(1,1), (0,0), (5,6)]))
print(allIn((0,0), (5,5), []))
代码逻辑错误定位

现有代码共存在3个核心逻辑bug,另有1个兼容性隐患:

  • 边界判断规则错误:根据示例要求,矩形边界上的点属于范围内,当前代码用p_x < x2、p_y < y2的严格小于判断,会把和右上角点重合的(5,5)判定为越界。
  • 校验逻辑位置错误:范围判断写在了for循环外部,循环仅会不断覆盖p_x、p_y的值,最终只校验列表最后一个点,前面所有点的越界情况都不会被检测到。
  • 空列表分支缺失:传入空点列表时,for循环不会执行,代码会直接走到return True分支,和空列表返回False的要求冲突。
  • 兼容性隐患:代码默认第一个角点的横纵坐标都小于第二个角点,如果调用时传入角点顺序颠倒,判断逻辑会完全失效。
修正后可运行代码
def allIn(firstCorner=(0,0), secondCorner=(0,0), pointList=[]):  
    # 空列表直接返回False
    if not pointList:
        return False
    # 计算矩形真实边界,兼容两个角点任意传入顺序
    x_min = min(firstCorner[0], secondCorner[0])
    x_max = max(firstCorner[0], secondCorner[0])
    y_min = min(firstCorner[1], secondCorner[1])
    y_max = max(firstCorner[1], secondCorner[1])

    # 逐个校验点,任意点越界立刻返回False
    for px, py in pointList:
        if not (x_min <= px <= x_max and y_min <= py <= y_max):
            return False
    # 所有点校验通过返回True
    return True

# 测试验证
print(allIn((0,0), (5,5), [(1,1), (0,0), (5,5)]))  # 输出True
print(allIn((0,0), (5,5), [(1,1), (0,0), (5,6)])) # 输出False
print(allIn((0,0), (5,5), []))                    # 输出False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:21:27