检查2给定的数字是否彼此接近python

时间:2018-03-08 18:44:15

标签: python

我被要求制作没有循环的代码,并检查第一个数字是否接近第二个数字(关闭意味着更大或更小一个)。我尝试使用巨大的条件,但我推测可能有一个更简单的方式然后做这样的事情:

  

如果num1 == num2或num1 == num2 - 1或num1 == num2 + 1

2 个答案:

答案 0 :(得分:0)

计算2个数字之间的差异,取其绝对值(如果num2大于num1)并将结果与​​1进行比较:

abs(num1 - num2) <= 1

这优于OP的代码

  1. 使用浮点数。 Ex 1和1.4将在原始代码中失败,但在此成功。

  2. 轻松更改&#34;的定义接近&#34;。例如,可以在rhs上使用0.5或10000000。

答案 1 :(得分:0)

我喜欢展示3个函数,它们使用相似的近似值,但使用列表:

def closest(lst, K):
    return lst[min(range(len(lst)), key=lambda i: abs(lst[i]-K))]

为了理解上层功能,下一个功能类似:

def closest(lst, K):
    minim = None
    for i in lst:
        aux = abs(i - K)
        if minim is None:
            minim = aux
            result = i
        if aux < minim:
            minim = aux
            result = i
    return result

使用numpy库:

import numpy
def closest(lst, K):
    lst = numpy.asarray(lst)
    idx = (numpy.abs(lst - K)).argmin()
    return lst[idx]

您可以使用以下示例调用上层函数:

lst = [2.4, 3.2, 6.9, 7.2, 9.8]
K = 5.1
print(closest(lst, K))

注意:如果数字恰好在中间,则该函数将获得最小值。