我正在使用abs
内置函数来测量两个数字之间的差异,无论x
是否大于y
或反之亦然。比较和减少两个数字之间的差异,无论哪个更大
例如,如果y = 5
和x = 7
,结果将是2
。如果y = 7
和x = 5
,结果仍然是2
。
但是如果我想重复,直到结果0
,是有办法,我可以使用abs
或不同的内置使y
或x
可以递增或递减,这样的结果将是0
?
我喜欢abs
功能,但它似乎是一个耻辱写出具有检查y
是否码大于x
,反之亦然,以递增或递减,直到差是0
。
我正在使用abs
内置函数来测量两个数字之间的差异,无论x
是否大于y
或反之亦然。比较和减少两个数字之间的差异,无论哪个更大
例如,如果y = 5
和x = 7
,结果将是2
。如果y = 7
和x = 5
,结果仍然是2
。
但是如果我想重复,直到结果0
,是有办法,我可以使用abs
或不同的内置使y
或x
可以递增或递减,这样的结果将是0
?
我喜欢abs
功能,但它似乎是一个耻辱写出具有检查y
是否码大于x
,反之亦然,以递增或递减,直到差是0
。
if x > y: x, y = y, x # swap x and y if x > y
for x in range(x, y+1):
diff = y-x
是非常简单的。请注意,一个if-statement
可以节省您N
致电abs
(其中N = abs(y-x)
)。所以我认为你应该更喜欢if-statement
而不是试图避免它。
既然你没有指定,如果你想增加(小)或递减 (较大)可能是通过一个,你可能只能在差异感兴趣。在这种情况下,您可以使用 :
for diff range(abs(y-x), -1, -1):
...
谢谢,会试试这个。 – SamChancer
如果你真的想避免的条件语句:
while abs(x-y) > 0:
# do something
sgn = (x-y)/abs(x-y)
x += max(0, -sgn) - max(0, sgn)
您想达到什么目的?你最终想要'x = 6'还是'y = 6',或者只要两个都相等,你会不在意?你有什么尝试 - 例如,为什么不选择一个,增加它,然后切换到递减,如果差异变大? – jonrsharpe
'x,y = sorted([x,y])',现在总是把'x'视为较小的值......! – deceze
谢谢,可以试试这个。 – SamChancer