如何 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 == 1
或 y == 1
时,最后一个等式将失败。您可能应该为此做一个特例,或者也执行 max(result_so_far, n)
。
我的问题如下。我是一个功能需求,用户可以在 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 == 1
或 y == 1
时,最后一个等式将失败。您可能应该为此做一个特例,或者也执行 max(result_so_far, n)
。