Python 检查2个给定的数字是否彼此接近
我被要求编写没有循环的代码,并检查第一个数字是否接近第二个数字(close表示大于或小于1)。我尝试使用大量条件,但我发现可能有一种更简单的方法,然后执行以下操作:Python 检查2个给定的数字是否彼此接近,python,Python,我被要求编写没有循环的代码,并检查第一个数字是否接近第二个数字(close表示大于或小于1)。我尝试使用大量条件,但我发现可能有一种更简单的方法,然后执行以下操作: lst = [2.4, 3.2, 6.9, 7.2, 9.8] K = 5.1 print(closest(lst, K)) 如果num1==num2或num1==num2-1或num1==num2+1 计算两个数字之间的差值,取其绝对值(如果num2大于num1),并将结果与1进行比较: abs(num1 - num2) <
lst = [2.4, 3.2, 6.9, 7.2, 9.8]
K = 5.1
print(closest(lst, K))
如果num1==num2或num1==num2-1或num1==num2+1
计算两个数字之间的差值,取其绝对值(如果
num2
大于num1
),并将结果与1进行比较:
abs(num1 - num2) <= 1
abs(num1-num2)我想介绍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
您可以使用如下示例调用上面的函数:
lst = [2.4, 3.2, 6.9, 7.2, 9.8]
K = 5.1
print(closest(lst, K))
<强>注:< /强>如果数字正好在中间,则函数得到最小值。
<代码> ABS(NUM1-NUM2)。如果您多次这样做,请写一个函数<代码> iSuthOffice(NUM1,NUM2)< /代码>,然后调用该函数。然后,如果您使用开始时使用的详细代码,那么它只在一个地方是详细的;如果您不确定自己是否理解Johnny Mopp的smarter代码,那么它被隔离到一个单独的地方,您可以单独测试;如果你以后想改变它,只有一个地方可以改变它;等等。无循环限制似乎很奇怪。使用循环并不是一件小事。@DeepSpace:使用循环很简单,没有循环更简单。新手永远不会编写任何代码(num1==x表示范围内的x(num2-1,num2+1))
,但他们可能会提出扩展版本。(也许“无循环”这件事不应该是禁止回答的限制,而是让他们不要走上那种思维方式的暗示?)