我被要求制作没有循环的代码,并检查第一个数字是否接近第二个数字(关闭意味着更大或更小一个)。我尝试使用巨大的条件,但我推测可能有一个更简单的方式然后做这样的事情:
如果num1 == num2或num1 == num2 - 1或num1 == num2 + 1
答案 0 :(得分:0)
计算2个数字之间的差异,取其绝对值(如果num2
大于num1
)并将结果与1进行比较:
abs(num1 - num2) <= 1
这优于OP的代码
使用浮点数。 Ex 1和1.4将在原始代码中失败,但在此成功。
轻松更改&#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))
注意:如果数字恰好在中间,则该函数将获得最小值。