2016-03-15 75 views
-3

我正在使用abs內置函數來測量兩個數字之間的差異,無論x是否大於y或反之亦然。比較和減少兩個數字之間的差異,無論哪個更大

例如,如果y = 5x = 7,結果將是2。如果y = 7x = 5,結果仍然是2

但是如果我想重複,直到結果0,是有辦法,我可以使用abs或不同的內置使yx可以遞增或遞減,這樣的結果將是0

我喜歡abs功能,但它似乎是一個恥辱寫出具有檢查y是否碼大於x,反之亦然,以遞增或遞減,直到差是0

+3

您想達到什麼目的?你最終想要'x = 6'還是'y = 6',或者只要兩個都相等,你會不在意?你有什麼嘗試 - 例如,爲什麼不選擇一個,增加它,然後切換到遞減,如果差異變大? – jonrsharpe

+0

'x,y = sorted([x,y])',現在總是把'x'視爲較小的值......! – deceze

+0

謝謝,可以試試這個。 – SamChancer

回答

1
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): 
    ... 
+0

謝謝,會試試這個。 – SamChancer

1

如果你真的想避免的條件語句:

while abs(x-y) > 0: 

    # do something 

    sgn = (x-y)/abs(x-y) 
    x += max(0, -sgn) - max(0, sgn)