如何 return 为不同层的 (x,y) 级别取值

How to return value for different layers of (x,y) levels

我的问题如下。我是一个功能需求,用户可以在 3 或 5 个级别之间进行选择,并且将根据 (x,y) 所属的级别返回一个值。

例如我们有 3 个级别

def f(x,y):
        if (0 <= x <= 0.3 and 0 <= y <= 1) or (0.3 <= x <= 1 and 0 <= y <= 0.3):
            return 1
        elif (0.3 < x <= 0.6 and 0.3 < y <= 1) or (0.6 <= x <= 1 and 0.3 < y <= 0.6):
            return 2
        else:
            return 3

对于 5 个级别,我们将有 5 个分支等等。

我想知道在 Python 中使用 DRY 原则的最佳方式(或好的方式)是什么。我现在脑子短路了

所以首先,我们可以认识到我们可以将您的程序重写为:

def f(x, y):
    if min(x, y) <= 0.3:
        return 1
    elif min(x, y) <= 0.6:
        return 2
    else:
        return 3

然后我们可以很容易地将其格式化为 for 循环:

from __future__ import division

def f(x, y, n=3):
    for i in range(1, n+1):
        if min(x, y) <= i/n:
            return i
    else:
        return n

我们也可以为此编写一个数学方程式并删除 for 循环:

def f(x, y, n=3):
    return int(min(x, y) * n) + 1

x == 1y == 1 时,最后一个等式将失败。您可能应该为此做一个特例,或者也执行 max(result_so_far, n)