我正在使用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