Python判断所有点是否在指定矩形内的代码返回值异常排查
问题根因
你的函数只在检测到存在点落在矩形外时显式返回了False,当所有待检测点遍历完成、没有触发越界返回分支时,Python函数没有显式指定返回值,会默认返回None,因此得不到预期的True。
另外现有逻辑存在隐藏缺陷:默认第一个角点的横、纵坐标均小于等于第二个角点,若传入的两个角点顺序颠倒(例如fc=(5,5)、sc=(0,0)),边界判断会完全失效。
修正后代码
def Functn1(fc=(0,0), sc=(0,0), p=[]): # 先计算矩形实际的坐标边界,兼容两个角点任意传入顺序 left = min(fc[0], sc[0]) right = max(fc[0], sc[0]) bottom = min(fc[1], sc[1]) top = max(fc[1], sc[1]) for point in p: p_x, p_y = point # 任意点越界直接返回False if not (left <= p_x <= right and bottom <= p_y <= top): return False # 所有点校验通过,显式返回True return True # 测试用例 print(Functn1((0,0), (5,5), [(1,1), (0,0), (5,5)]))
效果说明
- 传入的所有点都在矩形内部或边界时,函数正确返回
True - 存在任意点落在矩形外时,函数立即返回
False - 不受两个角点传入顺序影响,逻辑鲁棒性更强
内容的提问来源于stack exchange,提问作者Randomletters
相关产品推荐
相关产品推荐

