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

Python函数问题:判断点列表是否全部位于矩形内

解决判断点列表是否全部在矩形内的问题

先给你拆解下原代码的核心问题:

  • 迭代逻辑完全错误:遍历第一个点时只要满足条件就直接return True,根本没检查后续点。比如你测试的[(1,1), (0,0), (5,6)],第一个点符合就直接返回,完全忽略了后面超出范围的(5,6)。
  • 矩形边界判断冗余:没必要写四个if分支,先算出x、y方向的最大最小值,不管输入的两个对角是什么顺序,判断逻辑都能统一。
  • 空列表处理失效:你把空列表判断放在循环内部,当列表为空时循环根本不会执行,自然没有返回值。
  • 没必要依赖numpy:作业要求避免用库,直接遍历原生列表就行。

修正后的代码

def allIn(firstCorner=(0,0), secondCorner=(0,0), pointList=[]):
    # 处理空列表:这里默认空列表返回True(无点需要检查),若作业要求返回False可直接修改
    if not pointList:
        return True
    
    # 计算矩形的真实边界,适配任意对角输入
    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 x, y in pointList:
        if not (x_min <= x <= x_max and y_min <= y <= y_max):
            return False
    
    # 所有点都符合条件,返回True
    return True

代码说明

  1. 空列表处理:用if not pointList直接判断列表是否为空,提前处理避免无返回值的问题。
  2. 边界计算:通过min和max获取矩形x、y方向的真实边界,不管输入的两个角是左上右下还是右上左下,都能正确锁定矩形范围。
  3. 迭代逻辑:遍历每个点,只要发现一个点不在范围内立刻返回False;只有所有点都通过检查,最后才返回True,确保所有点都被验证。
  4. 无依赖库:完全用原生Python实现,符合作业要求。

测试你的示例

  • allIn((0,0), (5,5), [(1,1), (0,0), (5,6)]) → 返回False(符合预期)
  • allIn((0,0),(5,5),[(0,-1), (0,0), (5,6)]) → 返回False(符合预期)
  • allIn((0,0), (5,5), []) → 返回True(若需返回False,修改开头的return True即可)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:22:50