0

我做了这个小功能来检查一个点是否在选择框中:

def select(x1, y1, w, h):
    x, y = position
    x2 = x1 + w
    y2 = y1 + h

    if x >= x1 and y >= y1:
        if x <= x2 and y <= y2:
            selected = True
    else:
        selected = False

但它仅在 w 和 h 的值大于 x1 和 y1 时才有效。例如,如果盒子的尺寸是负数,它就不起作用。我如何在没有事先检查的情况下检查这些情况if w < x1 and h < y1

4

2 回答 2

2

为什么不使用以下检查:

if x >= min(x1,x2) and x <= max(x1,x2):
    if y >= min(y1,y2) and y <= max(y1,y2):
        ...
于 2013-11-12T23:52:03.207 回答
1

您可以找到两个数字的最小值和最大值,并在一个语句中将它们分配给变量,使用sorted(list)和解构赋值。还要注意min <= value <= max链式比较的使用:

def select(x1, y1, w, h):
    x, y = position

    minX, maxX = sorted([x1, x1 + w])
    minY, maxY = sorted([y1, y1 + h])

    if minX <= x <= maxX and minY <= y <= maxY:
        selected = True
    else:
        selected = False
于 2013-11-13T00:07:15.673 回答